blob: 7f3d3340b2175bdcd11d4e99597b903b3490332b [file] [log] [blame]
Hans Leidekker24a1ae12007-06-25 21:09:48 +02001/*
2 * Performance Data Helper
3 *
4 * Copyright 2007 Hans Leidekker
5 *
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.
10 *
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.
15 *
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
19 */
20
21#ifndef _PDH_H_
22#define _PDH_H_
23
24#ifdef __WINESRC__
25# include <windef.h>
26#else
27# include <windows.h>
28#endif
29#include <winperf.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35typedef LONG PDH_STATUS;
36typedef HANDLE PDH_HQUERY;
37typedef HANDLE PDH_HCOUNTER;
Hans Leidekker504e7c22007-09-29 21:05:53 +020038typedef HANDLE PDH_HLOG;
Hans Leidekker24a1ae12007-06-25 21:09:48 +020039
Andrew Nguyen2da65702010-01-30 18:24:52 -060040#define PDH_CVERSION_WIN40 0x0400
41#define PDH_CVERSION_WIN50 0x0500
42#define PDH_VERSION 0x0503
43
Hans Leidekker24a1ae12007-06-25 21:09:48 +020044#define PDH_MAX_SCALE 7
45#define PDH_MIN_SCALE (-7)
46
Hans Leidekker0fbb4612007-07-21 15:08:01 +020047#define PDH_MAX_COUNTER_NAME 1024
48
Hans Leidekker24a1ae12007-06-25 21:09:48 +020049#define PDH_FMT_LONG 0x00000100
50#define PDH_FMT_DOUBLE 0x00000200
51#define PDH_FMT_LARGE 0x00000400
52#define PDH_FMT_NOSCALE 0x00001000
53#define PDH_FMT_1000 0x00002000
54#define PDH_FMT_NOCAP100 0x00008000
55
Hans Leidekker960c2082010-01-25 12:25:47 +010056#define DATA_SOURCE_REGISTRY 0x00000001
57#define DATA_SOURCE_LOGFILE 0x00000002
58#define DATA_SOURCE_WBEM 0x00000004
59
Hans Leidekker24a1ae12007-06-25 21:09:48 +020060typedef struct _PDH_FMT_COUNTERVALUE
61{
62 DWORD CStatus;
63 union
64 {
65 LONG longValue;
66 double doubleValue;
67 LONGLONG largeValue;
68 LPCSTR AnsiStringValue;
69 LPCWSTR WideStringValue;
70 } DUMMYUNIONNAME;
71} PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
72
73typedef struct _PDH_RAW_COUNTER
74{
75 DWORD CStatus;
76 FILETIME TimeStamp;
77 LONGLONG FirstValue;
78 LONGLONG SecondValue;
79 DWORD MultiCount;
80} PDH_RAW_COUNTER, *PPDH_RAW_COUNTER;
81
82typedef struct _PDH_COUNTER_PATH_ELEMENTS_A
83{
84 LPSTR szMachineName;
85 LPSTR szObjectName;
86 LPSTR szInstanceName;
87 LPSTR szParentInstance;
88 DWORD dwInstanceIndex;
89 LPSTR szCounterName;
90} PDH_COUNTER_PATH_ELEMENTS_A, *PPDH_COUNTER_PATH_ELEMENTS_A;
91
92typedef struct _PDH_COUNTER_PATH_ELEMENTS_W
93{
94 LPWSTR szMachineName;
95 LPWSTR szObjectName;
96 LPWSTR szInstanceName;
97 LPWSTR szParentInstance;
98 DWORD dwInstanceIndex;
99 LPWSTR szCounterName;
100} PDH_COUNTER_PATH_ELEMENTS_W, *PPDH_COUNTER_PATH_ELEMENTS_W;
101
102typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A
103{
104 LPSTR szMachineName;
105 GUID ObjectGUID;
106 DWORD dwItemId;
107 LPSTR szInstanceName;
108} PDH_DATA_ITEM_PATH_ELEMENTS_A, *PPDH_DATA_ITEM_PATH_ELEMENTS_A;
109
110typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W
111{
112 LPWSTR szMachineName;
113 GUID ObjectGUID;
114 DWORD dwItemId;
115 LPWSTR szInstanceName;
116} PDH_DATA_ITEM_PATH_ELEMENTS_W, *PPDH_DATA_ITEM_PATH_ELEMENTS_W;
117
118typedef struct _PDH_COUNTER_INFO_A
119{
120 DWORD dwLength;
121 DWORD dwType;
122 DWORD CVersion;
123 DWORD CStatus;
124 LONG lScale;
125 LONG lDefaultScale;
126 DWORD_PTR dwUserData;
127 DWORD_PTR dwQueryUserData;
128 LPSTR szFullPath;
129 union
130 {
131 PDH_DATA_ITEM_PATH_ELEMENTS_A DataItemPath;
132 PDH_COUNTER_PATH_ELEMENTS_A CounterPath;
133 struct
134 {
135 LPSTR szMachineName;
136 LPSTR szObjectName;
137 LPSTR szInstanceName;
138 LPSTR szParentInstance;
139 DWORD dwInstanceIndex;
140 LPSTR szCounterName;
141 } DUMMYSTRUCTNAME;
142 } DUMMYUNIONNAME;
143 LPSTR szExplainText;
144 DWORD DataBuffer[1];
145} PDH_COUNTER_INFO_A, *PPDH_COUNTER_INFO_A;
146
147typedef struct _PDH_COUNTER_INFO_W
148{
149 DWORD dwLength;
150 DWORD dwType;
151 DWORD CVersion;
152 DWORD CStatus;
153 LONG lScale;
154 LONG lDefaultScale;
155 DWORD_PTR dwUserData;
156 DWORD_PTR dwQueryUserData;
157 LPWSTR szFullPath;
158 union
159 {
160 PDH_DATA_ITEM_PATH_ELEMENTS_W DataItemPath;
161 PDH_COUNTER_PATH_ELEMENTS_W CounterPath;
162 struct
163 {
164 LPWSTR szMachineName;
165 LPWSTR szObjectName;
166 LPWSTR szInstanceName;
167 LPWSTR szParentInstance;
168 DWORD dwInstanceIndex;
169 LPWSTR szCounterName;
170 } DUMMYSTRUCTNAME;
171 } DUMMYUNIONNAME;
172 LPWSTR szExplainText;
173 DWORD DataBuffer[1];
174} PDH_COUNTER_INFO_W, *PPDH_COUNTER_INFO_W;
175
176PDH_STATUS WINAPI PdhAddCounterA(PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *);
177PDH_STATUS WINAPI PdhAddCounterW(PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *);
178#define PdhAddCounter WINELIB_NAME_AW(PdhAddCounter)
Hans Leidekker1cec4e32007-07-21 15:08:15 +0200179PDH_STATUS WINAPI PdhAddEnglishCounterA(PDH_HQUERY, LPCSTR, DWORD_PTR, PDH_HCOUNTER *);
180PDH_STATUS WINAPI PdhAddEnglishCounterW(PDH_HQUERY, LPCWSTR, DWORD_PTR, PDH_HCOUNTER *);
181#define PdhAddEnglishCounter WINELIB_NAME_AW(PdhAddEnglishCounter)
Hans Leidekker24a1ae12007-06-25 21:09:48 +0200182PDH_STATUS WINAPI PdhCloseQuery(PDH_HQUERY);
183PDH_STATUS WINAPI PdhCollectQueryData(PDH_HQUERY);
Hans Leidekker0389ec62007-09-29 21:06:35 +0200184PDH_STATUS WINAPI PdhCollectQueryDataEx(PDH_HQUERY, DWORD, HANDLE);
Hans Leidekker1cec4e32007-07-21 15:08:15 +0200185PDH_STATUS WINAPI PdhCollectQueryDataWithTime(PDH_HQUERY,LONGLONG *);
Ricardo Filipecb829762009-01-27 16:39:32 +0000186PDH_STATUS WINAPI PdhEnumObjectItemsA(LPCSTR, LPCSTR, LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD, DWORD, DWORD);
187PDH_STATUS WINAPI PdhEnumObjectItemsW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD, DWORD, DWORD);
188#define PdhEnumObjectItems WINELIB_NAME_AW(PdhEnumObjectItems)
Hans Leidekker24a1ae12007-06-25 21:09:48 +0200189PDH_STATUS WINAPI PdhGetCounterInfoA(PDH_HCOUNTER, BOOLEAN, LPDWORD, PPDH_COUNTER_INFO_A);
190PDH_STATUS WINAPI PdhGetCounterInfoW(PDH_HCOUNTER, BOOLEAN, LPDWORD, PPDH_COUNTER_INFO_W);
191#define PdhGetCounterInfo WINELIB_NAME_AW(PdhGetCounterInfo)
192PDH_STATUS WINAPI PdhGetCounterTimeBase(PDH_HCOUNTER, LONGLONG *);
Andrew Nguyen2da65702010-01-30 18:24:52 -0600193PDH_STATUS WINAPI PdhGetDllVersion(LPDWORD);
Hans Leidekker24a1ae12007-06-25 21:09:48 +0200194PDH_STATUS WINAPI PdhGetFormattedCounterValue(PDH_HCOUNTER, DWORD, LPDWORD, PPDH_FMT_COUNTERVALUE);
195PDH_STATUS WINAPI PdhGetRawCounterValue(PDH_HCOUNTER, LPDWORD, PPDH_RAW_COUNTER);
Hans Leidekker0fbb4612007-07-21 15:08:01 +0200196PDH_STATUS WINAPI PdhLookupPerfIndexByNameA(LPCSTR, LPCSTR, LPDWORD);
197PDH_STATUS WINAPI PdhLookupPerfIndexByNameW(LPCWSTR, LPCWSTR, LPDWORD);
198#define PdhLookupPerfIndexByName WINELIB_NAME_AW(PdhLookupPerfIndexByName)
199PDH_STATUS WINAPI PdhLookupPerfNameByIndexA(LPCSTR, DWORD, LPSTR, LPDWORD);
200PDH_STATUS WINAPI PdhLookupPerfNameByIndexW(LPCWSTR, DWORD, LPWSTR, LPDWORD);
201#define PdhLookupPerfNameByIndex WINELIB_NAME_AW(PdhLookupPerfNameByIndex)
Hans Leidekker754b97c2009-05-08 11:17:15 +0200202PDH_STATUS WINAPI PdhMakeCounterPathA(PDH_COUNTER_PATH_ELEMENTS_A *, LPSTR, LPDWORD, DWORD);
203PDH_STATUS WINAPI PdhMakeCounterPathW(PDH_COUNTER_PATH_ELEMENTS_W *, LPWSTR, LPDWORD, DWORD);
204#define PdhMakeCounterPath WINELIB_NAME_AW(PdhMakeCounterPath)
Hans Leidekker24a1ae12007-06-25 21:09:48 +0200205PDH_STATUS WINAPI PdhOpenQueryA(LPCSTR, DWORD_PTR, PDH_HQUERY *);
206PDH_STATUS WINAPI PdhOpenQueryW(LPCWSTR, DWORD_PTR, PDH_HQUERY *);
207#define PdhOpenQuery WINELIB_NAME_AW(PdhOpenQuery)
208PDH_STATUS WINAPI PdhRemoveCounter(PDH_HCOUNTER);
209PDH_STATUS WINAPI PdhSetCounterScaleFactor(PDH_HCOUNTER, LONG);
Hans Leidekker960c2082010-01-25 12:25:47 +0100210PDH_STATUS WINAPI PdhSetDefaultRealTimeDataSource(DWORD);
Hans Leidekker504e7c22007-09-29 21:05:53 +0200211PDH_STATUS WINAPI PdhValidatePathA(LPCSTR);
212PDH_STATUS WINAPI PdhValidatePathW(LPCWSTR);
213#define PdhValidatePath WINELIB_NAME_AW(PdhValidatePath)
214PDH_STATUS WINAPI PdhValidatePathExA(PDH_HLOG, LPCSTR);
215PDH_STATUS WINAPI PdhValidatePathExW(PDH_HLOG, LPCWSTR);
216#define PdhValidatePathEx WINELIB_NAME_AW(PdhValidatePathEx)
Hans Leidekker24a1ae12007-06-25 21:09:48 +0200217
218#ifdef __cplusplus
219}
220#endif
221
222#endif /* _PDH_H_ */