Typindikatoren

Die tatsächlichen Eigenschaften folgen der Tabelle der Eigenschaften "Property Identifiers/Offset Pairs"-Eigenschaftssatzwerte. Jede Eigenschaft wird als DWORD-gespeichert, gefolgt vom Datentypwert.

Typindikatoren und die zugehörigen Werte werden in der PROPVARIANT Struktur beschrieben.

Alle Typ-/Wert-Paare müssen auf einer 32-Bit-Grenze beginnen. Daher können Werte mit Nullbytes gefolgt werden, um das nachfolgende Paar an einer 32-Bit-Grenze auszurichten.

Im folgenden Beispielcode wird berechnet, wie viele Bytes für die Ausrichtung an einer 32-Bit-Grenze erforderlich sind, wenn eine Anzahl von Bytes angegeben ist.

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

Innerhalb eines Wertevektors muss jede Wiederholung eines einfachen skalaren Werts, der kleiner als 32 Bit ist, an der natürlichen Ausrichtung ausgerichtet sein, anstatt mit einer 32-Bit-Ausrichtung. In der Praxis ist dies nur für Typen VT_UI1, VT_UI2, VT_I2und VT_BOOL (die eine byte- oder zweibyte natürliche Ausrichtung aufweisen) wichtig. Alle anderen Typen weisen eine natürliche Ausrichtung mit vier Byte auf. Einige Typen, z. B. VT_R8, weisen tatsächlich eine natürliche 8-Byte-Ausrichtung auf, werden jedoch so gespeichert, als ob sie vier Byte-Ausrichtung haben.

Ein Eigenschaftswert mit typindikator VT_I2 | VT_VECTOR würde Folgendes umfassen:

  • Eine DWORD- Elementanzahl.
  • Eine Sequenz von gepackten Ganzzahlen mit zwei Byte ohne Nullabstand dazwischen.

Wichtig

Alle 32-Bit-Anzahlen oder Eigenschaftstypen, die als Teil eines Vektoreigenschaftselements gespeichert sind, müssen ebenfalls 32-Bit ausgerichtet sein.

 

Ein Eigenschaftswert des Typbezeichners VT_LPSTR | VT_VECTOR umfassen:

  • Eine DWORD Elementanzahl (DWORDcElems).
  • Eine Abfolge von Zeichenfolgen (Zeichenrgch[]), jede vor einer Längenanzahl DWORD- und möglicherweise gefolgt von NULL-Abstand, um auf eine 32-Bit-Grenze zu runden.