Indicateurs de type

Les propriétés réelles suivent la table des valeurs de jeu de propriétés d’identificateurs de propriété/de paires de décalage. Chaque propriété est stockée sous la forme d’un DWORD, suivi de la valeur du type de données.

Les indicateurs de type et leurs valeurs associées sont décrits dans la structure PROPVARIANT .

Toutes les paires type/valeur doivent commencer sur une limite de 32 bits. Par conséquent, les valeurs peuvent être suivies avec des octets null pour aligner la paire suivante sur une limite de 32 bits.

L’exemple de code suivant calcule le nombre d’octets requis pour l’alignement sur une limite de 32 bits, en fonction d’un nombre d’octets.

cbAdd = (((cbCurrent + 3) >> 2) << 2) - cbCurrent ;

Dans un vecteur de valeurs, chaque répétition d’une valeur scalaire simple inférieure à 32 bits doit être alignée avec son alignement naturel plutôt qu’avec un alignement de 32 bits. Dans la pratique, cela n’est significatif que pour les types VT _ UI1, VT _ UI2, VT _ I2 et VT _ bool (qui ont un alignement naturel sur un octet ou sur deux octets). Tous les autres types ont un alignement naturel sur quatre octets. Certains types, par exemple, VT _ R8, ont en fait un alignement naturel sur 8 octets, mais ils sont stockés comme s’ils avaient un alignement sur quatre octets.

Une valeur de propriété avec l’indicateur de type VT _ I2 | VT _ Vector contient les éléments suivants :

  • Nombre d’éléments DWORD .
  • Séquence d’entiers compactés sur deux octets sans remplissage null entre eux.

Important

Tout nombre 32 bits ou type de propriété qui sont stockés dans le cadre d’un élément de propriété Vector doit également être aligné sur 32 bits.

Une valeur de propriété de type identificateur VT _ LPSTR VT | _ vecteur inclut les éléments suivants :

  • Nombre d’éléments DWORD (DWORD cElems).
  • Séquence de chaînes (char RGCH [ ]), chacune précédée d’un DWORD de longueur-nombre et éventuellement suivie d’un remplissage null pour arrondir à une limite de 32 bits.