Question to the C experts: is value assumed to be dword-aligned? I.e. is there a fillword after WORD type?
class PropertyItem
{
public:
PROPID id; // ID of this property
ULONG length; // Length of the property value, in bytes
WORD type; // Type of the value, as one of TAG_TYPE_XXX
// defined above
VOID* value; // property value
};