Cluster structures are used to describe data relating to an object in a cluster. The most common use of the majority of cluster structures is in a value list. A value list is returned by ClusterResourceControl and ClusterResourceTypeControl and is included in the property value of a property list.
Microsoft® Cluster Server defines a special structure, CLUSPROP_VALUE, that is used as a generic header in many cluster structures. CLUSPROP_VALUE has two members: a CLUSPROP_SYNTAX structure that describes a data value's format and type and a numeric value that describes a data value's length.
Most of the other cluster structures describe data of a particular type that is used in a value list. All of these structures include as their first member a CLUSPROP_VALUE structure. The following table lists the structures that are available for describing data values:
Cluster structure | Purpose |
---|---|
CLUSPROP_BINARY | Describes binary data. |
CLUSPROP_DISK_NUMBER | Describes the number of a disk. |
CLUSPROP_DISK_SIGNATURE | Describes the signature of a disk. |
CLUSPROP_DWORD | Describes numeric data. |
CLUSPROP_MULTI_SZ | Describes multiple strings. |
CLUSPROP_PARTITION_INFO | Describes information relevant to storage class resources. |
CLUSPROP_PROPERTY_NAME | Describes the name of a property. |
CLUSPROP_REQUIRED_DEPENDENCY | Describes a resource upon which another resource must depend. |
CLUSPROP_RESOURCE_CLASS | Describes a resource class value. |
CLUSPROP_RESOURCE_CLASS_INFO | Describes information relevant to a resource class. |
CLUSPROP_SCSI_ADDRESS | Describes an address for a SCSI device. |
CLUSPROP_SZ | Describes a null-terminated Unicode string. |
CLUSPROP_ULARGE_INTEGER | Describes an unsigned large integer. |
The data portion of these structures can be a single value or can itself be a structure. For example, the CLUSPROP_DISK_NUMBER structure includes a single DWORD to hold the data for the disk number. The CLUSPROP_VALUE portion of this structure is set as follows:
CLUSPROP_VALUE Value;
Value.Syntax = CLUSPROP_SYNTAX_DISK_NUMBER;
Value.cbLength = cbDiskNum;
Because the data for a SCSI device address requires more than a single value, the CLUSPROP_SCSI_ADDRESS structure uses a CLUS_SCSI_ADDRESS structure to hold it. The CLUSPROP_VALUE member of a CLUSPROP_SCSI_ADDRESS structure is set as follows:
CLUSPROP_VALUE Value;
Value.Syntax = CLUSPROP_SYNTAX_SCSI_ADDRESS;
Value.cbLength = cbSCSIAddress;
The CLUS_SCSI_ADDRESS structure is a union comprised of four unsigned characters or a single DWORD.
The following diagram shows the relationship between the structures used as headers, the structures used to describe data values, and the structures used to hold data for the data values. On the left is the header structure, CLUSPROP_VALUE. The structures shown in the middle column are the data value structures. Structures that have data of the same type are grouped together in the diagram. On the right are the data structures.
One CLUSPROP structure, CLUSPROP_REQUIRED_DEPENDENCY, is missing from the diagram because it has a slightly different format. CLUSPROP_REQUIRED_DEPENDENCY is a union with three members: a CLUSPROP_VALUE structure, a CLUSPROP_RESOURCE_CLASS structure, and a CLUSPROP_SZ structure.
In addition to the structures dedicated to describing data values, there are the following structures:
Cluster structure | Purpose |
---|---|
CLUS_WORKER | Describes information about a worker thread. |
CLUSPROP_BUFFER_HELPER | Used to build or parse a property or value list. |
CLUSPROP_LIST | Used to access the beginning of a property list. |
CLUSTERVERSIONINFO | Describes version information about the Cluster Service. |
RESUTIL_PROPERTY_ITEM | Contains information about a property and an offset to the property's data. |
Note To improve clarity, some of the definitions of the data value structures are not documented exactly as they appear in the CLUSAPI.H header file. Specifically, the documentation eliminates the extra level of indirection for structures that include another structure as a member.
For example, in the CLUSAPI.H header file, the CLUSPROP_PARTITION_INFO structure includes as a member a CLUS_PARTITION_INFO structure. The documentation, however, eliminates this extra level of indirection by listing all of the members of the CLUS_PARTITION_INFO as if they were members of the CLUSPROP_PARTITION_INFO structure directly.