4 * Copyright 2007 Hans Leidekker
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #define PERF_SIZE_DWORD 0x00000000
25 #define PERF_SIZE_LARGE 0x00000100
26 #define PERF_SIZE_ZERO 0x00000200
27 #define PERF_SIZE_VARIABLE_LEN 0x00000300
29 #define PERF_TYPE_NUMBER 0x00000000
30 #define PERF_TYPE_COUNTER 0x00000400
31 #define PERF_TYPE_TEXT 0x00000800
32 #define PERF_TYPE_ZERO 0x00000C00
34 #define PERF_NUMBER_HEX 0x00000000
35 #define PERF_NUMBER_DECIMAL 0x00010000
36 #define PERF_NUMBER_DEC_1000 0x00020000
38 #define PERF_COUNTER_VALUE 0x00000000
39 #define PERF_COUNTER_RATE 0x00010000
40 #define PERF_COUNTER_FRACTION 0x00020000
41 #define PERF_COUNTER_BASE 0x00030000
42 #define PERF_COUNTER_ELAPSED 0x00040000
43 #define PERF_COUNTER_QUEUELEN 0x00050000
44 #define PERF_COUNTER_HISTOGRAM 0x00060000
45 #define PERF_COUNTER_PRECISION 0x00070000
47 #define PERF_TEXT_UNICODE 0x00000000
48 #define PERF_TEXT_ASCII 0x00010000
50 #define PERF_TIMER_TICK 0x00000000
51 #define PERF_TIMER_100NS 0x00100000
52 #define PERF_OBJECT_TIMER 0x00200000
54 #define PERF_DELTA_COUNTER 0x00400000
55 #define PERF_DELTA_BASE 0x00800000
56 #define PERF_INVERSE_COUNTER 0x01000000
57 #define PERF_MULTI_COUNTER 0x02000000
59 #define PERF_DISPLAY_NO_SUFFIX 0x00000000
60 #define PERF_DISPLAY_PER_SEC 0x10000000
61 #define PERF_DISPLAY_PERCENT 0x20000000
62 #define PERF_DISPLAY_SECONDS 0x30000000
63 #define PERF_DISPLAY_NOSHOW 0x40000000
65 #define PERF_DETAIL_NOVICE 100
66 #define PERF_DETAIL_ADVANCED 200
67 #define PERF_DETAIL_EXPERT 300
68 #define PERF_DETAIL_WIZARD 400
72 /* Performance data structure header
73 * returned in answer to HKEY_PERFORMANCE_DATA request
76 #define PERF_DATA_VERSION 1
77 #define PERF_DATA_REVISION 1
79 typedef struct _PERF_DATA_BLOCK
85 DWORD TotalByteLength
;
89 SYSTEMTIME SystemTime
;
90 LARGE_INTEGER PerfTime
;
91 LARGE_INTEGER PerfFreq
;
92 LARGE_INTEGER PerfTime100nSec
;
93 DWORD SystemNameLength
;
94 DWORD SystemNameOffset
;
95 } PERF_DATA_BLOCK
, *PPERF_DATA_BLOCK
;
97 #define PERF_NO_INSTANCES -1
99 typedef struct _PERF_OBJECT_TYPE
101 DWORD TotalByteLength
;
102 DWORD DefinitionLength
;
104 DWORD ObjectNameTitleIndex
;
106 DWORD ObjectNameTitle
;
108 LPWSTR ObjectNameTitle
;
110 DWORD ObjectHelpTitleIndex
;
112 DWORD ObjectHelpTitle
;
114 LPWSTR ObjectHelpTitle
;
121 LARGE_INTEGER PerfTime
;
122 LARGE_INTEGER PerfFreq
;
123 } PERF_OBJECT_TYPE
, *PPERF_OBJECT_TYPE
;
125 typedef struct _PERF_COUNTER_DEFINITION
128 DWORD CounterNameTitleIndex
;
130 DWORD CounterNameTitle
;
132 LPWSTR CounterNameTitle
;
134 DWORD CounterHelpTitleIndex
;
136 DWORD CounterHelpTitle
;
138 LPWSTR CounterHelpTitle
;
145 } PERF_COUNTER_DEFINITION
, *PPERF_COUNTER_DEFINITION
;
147 #define PERF_NO_UNIQUE_ID -1
149 typedef struct _PERF_INSTANCE_DEFINITION
152 DWORD ParentObjectTitleIndex
;
153 DWORD ParentObjectInstance
;
157 } PERF_INSTANCE_DEFINITION
, *PPERF_INSTANCE_DEFINITION
;
159 typedef struct _PERF_COUNTER_BLOCK
162 } PERF_COUNTER_BLOCK
, *PPERF_COUNTER_BLOCK
;
167 typedef DWORD (APIENTRY PM_OPEN_PROC
)(LPWSTR
);
168 typedef DWORD (APIENTRY PM_COLLECT_PROC
)(LPWSTR
,LPVOID
*,LPDWORD
,LPDWORD
);
169 typedef DWORD (APIENTRY PM_CLOSE_PROC
)(void);
170 typedef DWORD (APIENTRY PM_QUERY_PROC
)(LPDWORD
,LPVOID
*,LPDWORD
,LPDWORD
);
172 #endif /* _WINPERF_ */