1 #ifndef _RPC_PERFCOUNT_H
2 #define _RPC_PERFCOUNT_H
4 typedef struct perf_counter_definition
6 /* sizeof(PERF_COUNTER_DEFINITION) */
8 uint32 CounterNameTitleIndex;
9 uint32 CounterNameTitlePointer;
10 uint32 CounterHelpTitleIndex;
11 uint32 CounterHelpTitlePointer;
18 PERF_COUNTER_DEFINITION;
20 typedef struct perf_counter_block
22 /* Total size of the data block, including all data plus this header */
28 typedef struct perf_instance_definition
30 /* Total size of the instance definition, including the length of the terminated Name string */
32 uint32 ParentObjectTitleIndex;
33 uint32 ParentObjectTitlePointer;
35 /* From the start of the PERF_INSTANCE_DEFINITION, the byte offset to the start of the Name string */
38 /* Unicode string containing the name for the instance */
40 PERF_COUNTER_BLOCK counter_data;
42 PERF_INSTANCE_DEFINITION;
44 typedef struct perf_object_type
46 /* Total size of the object block, including all PERF_INSTANCE_DEFINITIONs,
47 PERF_COUNTER_DEFINITIONs and PERF_COUNTER_BLOCKs in bytes */
48 uint32 TotalByteLength;
49 /* Size of this PERF_OBJECT_TYPE plus all PERF_COUNTER_DEFINITIONs in bytes */
50 uint32 DefinitionLength;
51 /* Size of this PERF_OBJECT_TYPE */
53 uint32 ObjectNameTitleIndex;
54 uint32 ObjectNameTitlePointer;
55 uint32 ObjectHelpTitleIndex;
56 uint32 ObjectHelpTitlePointer;
59 uint32 DefaultCounter;
64 PERF_COUNTER_DEFINITION *counters;
65 PERF_INSTANCE_DEFINITION *instances;
66 PERF_COUNTER_BLOCK counter_data;
70 /* PerfCounter Inner Buffer structs */
71 typedef struct perf_data_block
73 /* hardcoded to read "P.E.R.F" */
76 /* both currently hardcoded to 1 */
79 /* bytes of PERF_OBJECT_TYPE data, does NOT include the PERF_DATA_BLOCK */
80 uint32 TotalByteLength;
81 /* size of PERF_DATA_BLOCK including the uint8 *data */
83 /* number of PERF_OBJECT_TYPE structures encoded */
84 uint32 NumObjectTypes;
86 SYSTEMTIME SystemTime;
87 /* This will guarantee that we're on a 64-bit boundary before we encode
88 PerfTime, and having it there will make my offset math much easier. */
90 /* Now when I'm marshalling this, I'll need to call prs_align_uint64()
91 before I start encodint the UINT64_S structs */
92 /* clock rate * seconds uptime */
94 /* The clock rate of the CPU */
96 /* used for high-res timers -- for now PerfTime * 10e7 */
97 UINT64_S PerfTime100nSec;
98 uint32 SystemNameLength;
99 uint32 SystemNameOffset;
100 /* The SystemName, in unicode, terminated */
102 PERF_OBJECT_TYPE *objects;
106 #endif /* _RPC_PERFCOUNT_H */