2.2.3.10 PROPERTY_LIST

A PROPERTY_LIST is a self-describing data structure that contains a sequence of value lists. A PROPERTY_LIST MUST consist of the following elements:

  • A count of the properties in the list.

  • One value list for each property.

    Each property value list, in turn, MUST consist of the following elements:

    • A property name.

    • One or more property values. Each property value is represented by a data structure that is appropriate to the type of data. Each property value can consist of multiple data values, such as a string, an array, or a structure.

    • An enumeration value set to CLUSPROP_SYNTAX_ENDMARK.

Conceptually, a PROPERTY_LIST can be illustrated as in the following diagram.

Property list

Figure 1: Property list

The PROPERTY_LIST is a custom-marshaled contiguous buffer with fields that are specified as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

propertyCount

propertyValue (variable)

...

propertyCount (4 bytes): An unsigned 32-bit integer. The PROPERTY_LIST buffer MUST begin with an unsigned long indicating the count of properties in the PROPERTY_LIST. The count of properties MUST be followed by the properties in the form of property values.

propertyValue (variable): A variable-sized buffer of Property Value (section 2.2.3.10.1) structures. A property value MUST contain the name of the property that the value is associated with.

The layout of the property name, value list, and value list end mark is repeated in the PROPERTY_LIST buffer for each property in the PROPERTY_LIST. There MUST be one end mark structure for each property in the PROPERTY_LIST. The number of property names and value lists MUST sum to the count of properties that are specified at the beginning of the PROPERTY_LIST buffer. Therefore, the following statement MUST hold true:

  • propertyCount = number of properties

where each individual property contains a name and a value list.