Data structure for an instance identifier.
typedef struct _DCIInstanceId { uint32 size; /* Size of the instance id in bytes. */ uint32 levelWild; /* Wildcard bitmap, 32 levels, instance id. */ UMAArrayDescr instances; /* Descriptor for the variable-length instance array. */ UMAVarLenData data; /* The variable-length instance array. */ } DCIInstanceId; typedef DCIInstanceId * DCIInstanceId ;
An instance identifier is used to select one of a set of otherwise identical groups of metrics. For example, if one requests ClassId 254.1.3.1 with wildcarded instance ids, all of the thread information for all of the tasks currently active on the system is returned. The return structure's InstanceId array contains the task and thread values which identify a particular data area in the data buffer. Multiple instances can be represented within a single metric id.
Wildcarding is done via a bit mask in the DCIInstanceId structure. For example, instance id level one uses the mask 1, intance id level two uses the mask 2, and instance id level 3 uses the mask 4. Masks for multiple levels can be OR'd together.