The format of the data retrieved by the RegQueryValueEx function begins with a single header structure, PERF_DATA_BLOCK. The PERF_DATA_BLOCK structure describes the system and the performance data. The PERF_DATA_BLOCK structure is followed by a list of object information blocks (one per object).
PERF_DATA_BLOCK |
Object 1 information |
Object 2 information |
Object 3 information |
… |
Object X information |
Basic Performance Data Structure
Each object information block contains a PERF_OBJECT_TYPE structure, which describes the performance data for the object. The PERF_OBJECT_TYPE structure is followed by a list of PERF_COUNTER_DEFINITION structures, one for each counter defined for the object. For an object with only one instance, the list of PERF_COUNTER_DEFINITION structures is followed by a single PERF_COUNTER_BLOCK structure, followed by the data for each counter.
PERF_OBJECT_TYPE |
PERF_COUNTER_DEFINITION 1 |
PERF_COUNTER_DEFINITION 2 |
PERF_COUNTER_DEFINITION 3 |
… |
PERF_COUNTER_DEFINITION Y |
PERF_COUNTER_BLOCK |
Counter 1 data |
Counter 2 data |
Counter 3 data |
… |
Counter Y data |
Structure of Object Information Block (One Instance)
For an object type that supports multiple instances, the list of PERF_COUNTER_DEFINITION structures is followed by a list of instance information blocks (one for each instance).
PERF_OBJECT_TYPE |
PERF_COUNTER_DEFINITION 1 |
PERF_COUNTER_DEFINITION 2 |
PERF_COUNTER_DEFINITION 3 |
… |
PERF_COUNTER_DEFINITION Y |
Instance 1 Information |
Instance 2 Information |
Instance 3 Information |
… |
Instance Z Information |
Structure of Object Information Block (Multiple Instances)
Each instance information block contains a PERF_INSTANCE_DEFINITION structure and a PERF_COUNTER_BLOCK structure.
PERF_INSTANCE_DEFINITION |
Instance name |
PERF_COUNTER_BLOCK |
Counter Data 1 |
Counter Data 2 |
Counter Data 3 |
… |
Counter Data Y |
Structure of Instance Information Block