Indicateurs de type

Les propriétés réelles suivent la table des valeurs des ensembles de propriétés Identificateurs de propriété/Paires offset. Chaque propriété est stockée sous la forme d’un DWORD, suivie de la valeur de type de données.

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

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

L’exemple de code suivant calcule le nombre d’octets requis pour s’aligner sur une limite 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 s’aligner sur son alignement naturel plutôt qu’avec un alignement 32 bits. Dans la pratique, cela n’est significatif que pour les types VT_UI1, VT_UI2, VT_I2et VT_BOOL (qui ont un alignement naturel d’un octet ou deux octets). Tous les autres types ont un alignement naturel de quatre octets. Certains types, par exemple, VT_R8, ont en fait un alignement naturel de 8 octets, mais sont stockés comme s’ils ont un alignement de quatre octets.

Une valeur de propriété avec indicateur de type VT_I2 | VT_VECTOR inclut :

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

Important

Tous les nombres de 32 bits ou types de propriétés stockés dans le cadre d’un élément de propriété vectoriel doivent également être alignés sur 32 bits.

 

Une valeur de propriété de l’identificateur de type VT_LPSTR | VT_VECTOR inclut :

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