Performance Data Format

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