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