msvcrt: Import cbrt implementation from musl.
[wine.git] / include / winperf.h
blob113bfbae40fa269c4033c82874cd3c279b6438b7
1 /*
2 * Performance Monitor
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
21 #ifndef _WINPERF_
22 #define _WINPERF_
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
70 #include <pshpack8.h>
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
81 WCHAR Signature[4];
82 DWORD LittleEndian;
83 DWORD Version;
84 DWORD Revision;
85 DWORD TotalByteLength;
86 DWORD HeaderLength;
87 DWORD NumObjectTypes;
88 DWORD DefaultObject;
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;
103 DWORD HeaderLength;
104 DWORD ObjectNameTitleIndex;
105 #ifdef _WIN64
106 DWORD ObjectNameTitle;
107 #else
108 LPWSTR ObjectNameTitle;
109 #endif
110 DWORD ObjectHelpTitleIndex;
111 #ifdef _WIN64
112 DWORD ObjectHelpTitle;
113 #else
114 LPWSTR ObjectHelpTitle;
115 #endif
116 DWORD DetailLevel;
117 DWORD NumCounters;
118 LONG DefaultCounter;
119 LONG NumInstances;
120 DWORD CodePage;
121 LARGE_INTEGER PerfTime;
122 LARGE_INTEGER PerfFreq;
123 } PERF_OBJECT_TYPE, *PPERF_OBJECT_TYPE;
125 typedef struct _PERF_COUNTER_DEFINITION
127 DWORD ByteLength;
128 DWORD CounterNameTitleIndex;
129 #ifdef _WIN64
130 DWORD CounterNameTitle;
131 #else
132 LPWSTR CounterNameTitle;
133 #endif
134 DWORD CounterHelpTitleIndex;
135 #ifdef _WIN64
136 DWORD CounterHelpTitle;
137 #else
138 LPWSTR CounterHelpTitle;
139 #endif
140 LONG DefaultScale;
141 DWORD DetailLevel;
142 DWORD CounterType;
143 DWORD CounterSize;
144 DWORD CounterOffset;
145 } PERF_COUNTER_DEFINITION, *PPERF_COUNTER_DEFINITION;
147 #define PERF_NO_UNIQUE_ID -1
149 typedef struct _PERF_INSTANCE_DEFINITION
151 DWORD ByteLength;
152 DWORD ParentObjectTitleIndex;
153 DWORD ParentObjectInstance;
154 LONG UniqueID;
155 DWORD NameOffset;
156 DWORD NameLength;
157 } PERF_INSTANCE_DEFINITION, *PPERF_INSTANCE_DEFINITION;
159 typedef struct _PERF_COUNTER_BLOCK
161 DWORD ByteLength;
162 } PERF_COUNTER_BLOCK, *PPERF_COUNTER_BLOCK;
165 #include <poppack.h>
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_ */