About Property Lists

A property list is similar to a value list in that both types of lists consist of one or more entries and a unique last entry, identified by CLUSPROP_SYNTAX_ENDMARK. The entries in a property list, however, are more complex than in a value list. While an entry in a value list consists of a CLUSPROP_VALUE structure and a data value, an entry in a property list consists of a property name and a property value. The property name is made up of:

The property value is a value list plus padding if the value list is not DWORD aligned. Because each property value in a property list must always be DWORD aligned, padding is required only if the value is not yet property aligned. Typically the value list for a property value will contain two entries: one to describe the data in the property value and the other to mark the end of the list.

Any of the control codes that work with properties use a property list for input or return a property list as output. For example, ClusterResourceControl returns a property list from its handling of CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES and requires a property list to handle CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES.

The following diagram shows the layout of a property list. Gray shading is used to indicate data that is only required if the data is not DWORD aligned.

To locate a specific property in a property list, use the utility function called ResUtilFindSzProperty. ResUtilFindSzProperty returns a pointer to the string in the property list for the specified property. ResUtilFindDwordProperty is also available. These functions are defined in the resource utility library, RESUTILS.DLL. The prototypes for these functions are located in RESAPI.H. Another option for locating information is to loop through each property until you are finished. If you don't know exactly what you are looking for, this is the only option.

The CLUSPROP_BUFFER_HELPER structure is also helpful for parsing or constructing a property list or value list. This structure is a union of pointers to the individual CLUSPROP value structures defined in CLUSAPI.H.

For more information about value lists, see About Value Lists.