Section

This is the third part of the property set stream, as shown in Figure C.2. A section contains:

    Byte count for the section (which is inclusive of the byte count itself)

    Array of 32-bit Property ID/Offset pairs

    Array of property Type Indicators/Value pairs

 

Offsets are the distance from the start of the section to the start of the property (type, value) pair. This allows a section to be copied as an array of bytes without any translation of internal structure.

The following pseudo-structures illustrate the format of a section:

typedef struct tagPROPERTYSECTIONHEADER

    DWORD  cbSection ;    // Size of Section

    DWORD  cProperties ;  // Count of Properties in section

} PROPERTYSECTIONHEADER;

 

typedef struct tagPROPERTYIDOFFSET

    DWORD  propid;    // Name of property

    DWORD  dwOffset;  // Offset from start of section to that property

} PROPERTYIDOFFSET;

 

typedef struct tag SERIALIZEDPROPERTYVALUE

    DWORD  dwType;   // Property Type

    BYTE   rgb[];    // Property Value

} SERIALIZEDPROPERTYVALUE ;