1 // Copyright © 2016-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! Common Performance Data Helper definitions
8 use ctypes::c_double;
9 use shared::basetsd::DWORD_PTR;
10 use shared::guiddef::GUID;
11 use shared::minwindef::{BOOL, DWORD, FILETIME, LPDWORD, UCHAR};
12 use shared::windef::HWND;
13 use um::winnt::{BOOLEAN, HANDLE, LONG, LONGLONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
14 pub const PDH_FMT_RAW: DWORD = 0x00000010;
15 pub const PDH_FMT_ANSI: DWORD = 0x00000020;
16 pub const PDH_FMT_UNICODE: DWORD = 0x00000040;
17 pub const PDH_FMT_LONG: DWORD = 0x00000100;
18 pub const PDH_FMT_DOUBLE: DWORD = 0x00000200;
19 pub const PDH_FMT_LARGE: DWORD = 0x00000400;
20 pub const PDH_FMT_NOSCALE: DWORD = 0x00001000;
21 pub const PDH_FMT_1000: DWORD = 0x00002000;
22 pub const PDH_FMT_NODATA: DWORD = 0x00004000;
23 pub const PDH_FMT_NOCAP100: DWORD = 0x00008000;
24 pub const PERF_DETAIL_COSTLY: DWORD = 0x00010000;
25 pub const PERF_DETAIL_STANDARD: DWORD = 0x0000FFFF;
26 pub type PDH_STATUS = LONG;
27 pub type PDH_HQUERY = HANDLE;
28 pub type HQUERY = PDH_HQUERY;
29 pub type PDH_HCOUNTER = HANDLE;
30 pub type HCOUNTER = PDH_HCOUNTER;
31 pub type PPDH_BROWSE_DLG_CONFIG_A = *mut PDH_BROWSE_DLG_CONFIG_A;
32 pub type PPDH_BROWSE_DLG_CONFIG_W = *mut PDH_BROWSE_DLG_CONFIG_W;
33 pub type PDH_HLOG = HANDLE;
34 pub type PPDH_RAW_LOG_RECORD = *mut PDH_RAW_LOG_RECORD;
35 pub type PPDH_TIME_INFO = *mut PDH_TIME_INFO;
36 pub type PPDH_RAW_COUNTER = *mut PDH_RAW_COUNTER;
37 pub type PPDH_COUNTER_INFO_A = *mut PDH_COUNTER_INFO_A;
38 pub type PPDH_COUNTER_INFO_W = *mut PDH_COUNTER_INFO_W;
39 pub type PPDH_STATISTICS = *mut PDH_STATISTICS;
40 pub type PPDH_FMT_COUNTERVALUE_ITEM_A = *mut PDH_FMT_COUNTERVALUE_ITEM_A;
41 pub type PPDH_FMT_COUNTERVALUE_ITEM_W = *mut PDH_FMT_COUNTERVALUE_ITEM_W;
42 pub type PPDH_DATA_ITEM_PATH_ELEMENTS_A = *mut PDH_DATA_ITEM_PATH_ELEMENTS_A;
43 pub type PPDH_DATA_ITEM_PATH_ELEMENTS_W = *mut PDH_DATA_ITEM_PATH_ELEMENTS_W;
44 pub type PPDH_FMT_COUNTERVALUE = *mut PDH_FMT_COUNTERVALUE;
45 FN!{stdcall CounterPathCallBack(
46     DWORD_PTR,
47 ) -> PDH_STATUS}
48 pub type PPDH_COUNTER_PATH_ELEMENTS_A = *mut PDH_COUNTER_PATH_ELEMENTS_A;
49 pub type PPDH_COUNTER_PATH_ELEMENTS_W = *mut PDH_COUNTER_PATH_ELEMENTS_W;
50 pub type PPDH_BROWSE_DLG_CONFIG_HA = *mut PDH_BROWSE_DLG_CONFIG_HA;
51 pub type PPDH_BROWSE_DLG_CONFIG_HW = *mut PDH_BROWSE_DLG_CONFIG_HW;
52 UNION!{union PDH_FMT_COUNTERVALUE_u {
53     [u64; 1],
54     longValue longValue_mut: LONG,
55     doubleValue doubleValue_mut: c_double,
56     largeValue largeValue_mut: LONGLONG,
57     AnsiStringValue AnsiStringValue_mut: LPCSTR,
58     WideStringValue WideStringValue_mut: LPCWSTR,
59 }}
60 STRUCT!{struct PDH_FMT_COUNTERVALUE {
61     CStatus: DWORD,
62     u: PDH_FMT_COUNTERVALUE_u,
63 }}
64 STRUCT!{struct PDH_RAW_LOG_RECORD {
65     dwStructureSize: DWORD,
66     dwRecordType: DWORD,
67     dwItems: DWORD,
68     RawBytes: UCHAR,
69 }}
70 STRUCT!{struct PDH_TIME_INFO {
71     StartTime: LONGLONG,
72     EndTime: LONGLONG,
73     SampleCount: DWORD,
74 }}
75 STRUCT!{struct PDH_RAW_COUNTER {
76     CStatus: DWORD,
77     TimeStamp: FILETIME,
78     FirstValue: LONGLONG,
79     SecondValue: LONGLONG,
80     MultiCount: DWORD,
81 }}
82 STRUCT!{struct PDH_STATISTICS {
83     dwFormat: DWORD,
84     count: DWORD,
85     min: PDH_FMT_COUNTERVALUE,
86     max: PDH_FMT_COUNTERVALUE,
87     mean: PDH_FMT_COUNTERVALUE,
88 }}
89 STRUCT!{struct PDH_FMT_COUNTERVALUE_ITEM_A {
90     szName: LPSTR,
91     FmtValue: PDH_FMT_COUNTERVALUE,
92 }}
93 STRUCT!{struct PDH_FMT_COUNTERVALUE_ITEM_W {
94     szName: LPWSTR,
95     FmtValue: PDH_FMT_COUNTERVALUE,
96 }}
97 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_A {
98     flags: DWORD,
99     hWndOwner: HWND,
100     szDataSource: LPSTR,
101     szReturnPathBuffer: LPSTR,
102     cchReturnPathLength: DWORD,
103     pCallBack: CounterPathCallBack,
104     dwCallBackArg: DWORD_PTR,
105     CallBackStatus: PDH_STATUS,
106     dwDefaultDetailLevel: DWORD,
107     szDialogBoxCaption: LPSTR,
108 }}
109 BITFIELD!{PDH_BROWSE_DLG_CONFIG_A flags: DWORD [
110     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
111     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
112     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
113     LocalCountersOnly set_LocalCountersOnly[3..4],
114     WildCardInstances set_WildCardInstances[4..5],
115     HideDetailBox set_HideDetailBox[5..6],
116     InitializePath set_InitializePath[6..7],
117     DisableMachineSelection set_DisableMachineSelection[7..8],
118     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
119     ShowObjectBrowser set_ShowObjectBrowser[9..10],
120 ]}
121 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_W {
122     flags: DWORD,
123     hWndOwner: HWND,
124     szDataSource: LPWSTR,
125     szReturnPathBuffer: LPWSTR,
126     cchReturnPathLength: DWORD,
127     pCallBack: CounterPathCallBack,
128     dwCallBackArg: DWORD_PTR,
129     CallBackStatus: PDH_STATUS,
130     dwDefaultDetailLevel: DWORD,
131     szDialogBoxCaption: LPWSTR,
132 }}
133 BITFIELD!{PDH_BROWSE_DLG_CONFIG_W flags: DWORD [
134     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
135     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
136     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
137     LocalCountersOnly set_LocalCountersOnly[3..4],
138     WildCardInstances set_WildCardInstances[4..5],
139     HideDetailBox set_HideDetailBox[5..6],
140     InitializePath set_InitializePath[6..7],
141     DisableMachineSelection set_DisableMachineSelection[7..8],
142     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
143     ShowObjectBrowser set_ShowObjectBrowser[9..10],
144 ]}
145 STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_A {
146     szMachineName: LPSTR,
147     szObjectName: LPSTR,
148     szInstanceName: LPSTR,
149     szParentInstance: LPSTR,
150     dwInstanceIndex: DWORD,
151     szCounterName: LPSTR,
152 }}
153 STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_W {
154     szMachineName: LPWSTR,
155     szObjectName: LPWSTR,
156     szInstanceName: LPWSTR,
157     szParentInstance: LPWSTR,
158     dwInstanceIndex: DWORD,
159     szCounterName: LPWSTR,
160 }}
161 STRUCT!{struct PDH_DATA_ITEM_PATH_ELEMENTS_A {
162     szMachineName: LPSTR,
163     ObjectGUID: GUID,
164     dwItemId: DWORD,
165     szInstanceName: LPSTR,
166 }}
167 STRUCT!{struct PDH_DATA_ITEM_PATH_ELEMENTS_W {
168     szMachineName: LPWSTR,
169     ObjectGUID: GUID,
170     dwItemId: DWORD,
171     szInstanceName: LPWSTR,
172 }}
173 STRUCT!{struct PDH_COUNTER_INFO_A_u_s {
174     szMachineName: LPSTR,
175     szObjectName: LPSTR,
176     szInstanceName: LPSTR,
177     szParentInstance: LPSTR,
178     dwInstanceIndex: DWORD,
179     szCounterName: LPSTR,
180 }}
181 UNION!{union PDH_COUNTER_INFO_A_u {
182     [u32; 7] [u64; 6],
183     DataItemPath DataItemPath_mut: PDH_DATA_ITEM_PATH_ELEMENTS_A,
184     CounterPath CounterPath_mut: PDH_COUNTER_PATH_ELEMENTS_A,
185     s s_mut: PDH_COUNTER_INFO_A_u_s,
186 }}
187 STRUCT!{struct PDH_COUNTER_INFO_A {
188     dwLength: DWORD,
189     dwType: DWORD,
190     CVersion: DWORD,
191     CStatus: DWORD,
192     lScale: LONG,
193     lDefaultScale: LONG,
194     dwUserData: DWORD_PTR,
195     dwQueryUserData: DWORD_PTR,
196     szFullPath: LPSTR,
197     u: PDH_COUNTER_INFO_A_u,
198     szExplainText: LPSTR,
199     DataBuffer: [DWORD; 1],
200 }}
201 STRUCT!{struct PDH_COUNTER_INFO_W_u_s {
202     szMachineName: LPWSTR,
203     szObjectName: LPWSTR,
204     szInstanceName: LPWSTR,
205     szParentInstance: LPWSTR,
206     dwInstanceIndex: DWORD,
207     szCounterName: LPWSTR,
208 }}
209 UNION!{union PDH_COUNTER_INFO_W_u {
210     [u32; 7] [u64; 6],
211     DataItemPath DataItemPath_mut: PDH_DATA_ITEM_PATH_ELEMENTS_W,
212     CounterPath CounterPath_mut: PDH_COUNTER_PATH_ELEMENTS_W,
213     s s_mut: PDH_COUNTER_INFO_W_u_s,
214 }}
215 STRUCT!{struct PDH_COUNTER_INFO_W {
216     dwLength: DWORD,
217     dwType: DWORD,
218     CVersion: DWORD,
219     CStatus: DWORD,
220     lScale: LONG,
221     lDefaultScale: LONG,
222     dwUserData: DWORD_PTR,
223     dwQueryUserData: DWORD_PTR,
224     szFullPath: LPWSTR,
225     u: PDH_COUNTER_INFO_W_u,
226     szExplainText: LPWSTR,
227     DataBuffer: [DWORD; 1],
228 }}
229 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_HA {
230     flags: DWORD,
231     hWndOwner: HWND,
232     hDataSource: PDH_HLOG,
233     szReturnPathBuffer: LPSTR,
234     cchReturnPathLength: DWORD,
235     pCallBack: CounterPathCallBack,
236     dwCallBackArg: DWORD_PTR,
237     CallBackStatus: PDH_STATUS,
238     dwDefaultDetailLevel: DWORD,
239     szDialogBoxCaption: LPSTR,
240 }}
241 BITFIELD!{PDH_BROWSE_DLG_CONFIG_HA flags: DWORD [
242     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
243     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
244     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
245     LocalCountersOnly set_LocalCountersOnly[3..4],
246     WildCardInstances set_WildCardInstances[4..5],
247     HideDetailBox set_HideDetailBox[5..6],
248     InitializePath set_InitializePath[6..7],
249     DisableMachineSelection set_DisableMachineSelection[7..8],
250     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
251     ShowObjectBrowser set_ShowObjectBrowser[9..10],
252 ]}
253 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_HW {
254     flags: DWORD,
255     hWndOwner: HWND,
256     hDataSource: PDH_HLOG,
257     szReturnPathBuffer: LPWSTR,
258     cchReturnPathLength: DWORD,
259     pCallBack: CounterPathCallBack,
260     dwCallBackArg: DWORD_PTR,
261     CallBackStatus: PDH_STATUS,
262     dwDefaultDetailLevel: DWORD,
263     szDialogBoxCaption: LPWSTR,
264 }}
265 BITFIELD!{PDH_BROWSE_DLG_CONFIG_HW flags: DWORD [
266     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
267     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
268     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
269     LocalCountersOnly set_LocalCountersOnly[3..4],
270     WildCardInstances set_WildCardInstances[4..5],
271     HideDetailBox set_HideDetailBox[5..6],
272     InitializePath set_InitializePath[6..7],
273     DisableMachineSelection set_DisableMachineSelection[7..8],
274     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
275     ShowObjectBrowser set_ShowObjectBrowser[9..10],
276 ]}
277 extern "system" {
PdhGetDllVersion( lpdwVersion: LPDWORD, ) -> PDH_STATUS278     pub fn PdhGetDllVersion(
279         lpdwVersion: LPDWORD,
280     ) -> PDH_STATUS;
PdhOpenQueryW( szDataSource: LPCWSTR, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS281     pub fn PdhOpenQueryW(
282         szDataSource: LPCWSTR,
283         dwUserData: DWORD_PTR,
284         phQuery: *mut PDH_HQUERY,
285     ) -> PDH_STATUS;
PdhOpenQueryA( szDataSource: LPCSTR, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS286     pub fn PdhOpenQueryA(
287         szDataSource: LPCSTR,
288         dwUserData: DWORD_PTR,
289         phQuery: *mut PDH_HQUERY,
290     ) -> PDH_STATUS;
PdhAddCounterW( hQuery: PDH_HQUERY, szFullCounterPath: LPCWSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS291     pub fn PdhAddCounterW(
292         hQuery: PDH_HQUERY,
293         szFullCounterPath: LPCWSTR,
294         dwUserData: DWORD_PTR,
295         phCounter: *mut PDH_HCOUNTER,
296     ) -> PDH_STATUS;
PdhAddCounterA( hQuery: PDH_HQUERY, szFullCounterPath: LPCSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS297     pub fn PdhAddCounterA(
298         hQuery: PDH_HQUERY,
299         szFullCounterPath: LPCSTR,
300         dwUserData: DWORD_PTR,
301         phCounter: *mut PDH_HCOUNTER,
302     ) -> PDH_STATUS;
PdhAddEnglishCounterW( hQuery: PDH_HQUERY, szFullCounterPath: LPCWSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS303     pub fn PdhAddEnglishCounterW(
304         hQuery: PDH_HQUERY,
305         szFullCounterPath: LPCWSTR,
306         dwUserData: DWORD_PTR,
307         phCounter: *mut PDH_HCOUNTER,
308     ) -> PDH_STATUS;
PdhAddEnglishCounterA( hQuery: PDH_HQUERY, szFullCounterPath: LPCSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS309     pub fn PdhAddEnglishCounterA(
310         hQuery: PDH_HQUERY,
311         szFullCounterPath: LPCSTR,
312         dwUserData: DWORD_PTR,
313         phCounter: *mut PDH_HCOUNTER,
314     ) -> PDH_STATUS;
PdhCollectQueryDataWithTime( hQuery: PDH_HQUERY, pllTimeStamp: *mut LONGLONG, ) -> PDH_STATUS315     pub fn PdhCollectQueryDataWithTime(
316         hQuery: PDH_HQUERY,
317         pllTimeStamp: *mut LONGLONG,
318     ) -> PDH_STATUS;
PdhValidatePathExW( hDataSource: PDH_HLOG, szFullPathBuffer: LPCWSTR, ) -> PDH_STATUS319     pub fn PdhValidatePathExW(
320         hDataSource: PDH_HLOG,
321         szFullPathBuffer: LPCWSTR,
322     ) -> PDH_STATUS;
PdhValidatePathExA( hDataSource: PDH_HLOG, szFullPathBuffer: LPCSTR, ) -> PDH_STATUS323     pub fn PdhValidatePathExA(
324         hDataSource: PDH_HLOG,
325         szFullPathBuffer: LPCSTR,
326     ) -> PDH_STATUS;
PdhRemoveCounter( hCounter: PDH_HCOUNTER, ) -> PDH_STATUS327     pub fn PdhRemoveCounter(
328         hCounter: PDH_HCOUNTER,
329     ) -> PDH_STATUS;
PdhCollectQueryData( hQuery: PDH_HQUERY, ) -> PDH_STATUS330     pub fn PdhCollectQueryData(
331         hQuery: PDH_HQUERY,
332     ) -> PDH_STATUS;
PdhCloseQuery( hQuery: PDH_HQUERY, ) -> PDH_STATUS333     pub fn PdhCloseQuery(
334         hQuery: PDH_HQUERY,
335     ) -> PDH_STATUS;
PdhGetFormattedCounterValue( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwType: LPDWORD, pValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS336     pub fn PdhGetFormattedCounterValue(
337         hCounter: PDH_HCOUNTER,
338         dwFormat: DWORD,
339         lpdwType: LPDWORD,
340         pValue: PPDH_FMT_COUNTERVALUE,
341     ) -> PDH_STATUS;
PdhGetFormattedCounterArrayA( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A, ) -> PDH_STATUS342     pub fn PdhGetFormattedCounterArrayA(
343         hCounter: PDH_HCOUNTER,
344         dwFormat: DWORD,
345         lpdwBufferSize: LPDWORD,
346         lpdwBufferCount: LPDWORD,
347         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A,
348     ) -> PDH_STATUS;
PdhGetFormattedCounterArrayW( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W, ) -> PDH_STATUS349     pub fn PdhGetFormattedCounterArrayW(
350         hCounter: PDH_HCOUNTER,
351         dwFormat: DWORD,
352         lpdwBufferSize: LPDWORD,
353         lpdwBufferCount: LPDWORD,
354         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W,
355     ) -> PDH_STATUS;
PdhGetRawCounterValue( hCounter: PDH_HCOUNTER, lpdwType: LPDWORD, pValue: PPDH_RAW_COUNTER, ) -> PDH_STATUS356     pub fn PdhGetRawCounterValue(
357         hCounter: PDH_HCOUNTER,
358         lpdwType: LPDWORD,
359         pValue: PPDH_RAW_COUNTER,
360     ) -> PDH_STATUS;
PdhGetRawCounterArrayA( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A, ) -> PDH_STATUS361     pub fn PdhGetRawCounterArrayA(
362         hCounter: PDH_HCOUNTER,
363         dwFormat: DWORD,
364         lpdwBufferSize: LPDWORD,
365         lpdwBufferCount: LPDWORD,
366         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A,
367     ) -> PDH_STATUS;
PdhGetRawCounterArrayW( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W, ) -> PDH_STATUS368     pub fn PdhGetRawCounterArrayW(
369         hCounter: PDH_HCOUNTER,
370         dwFormat: DWORD,
371         lpdwBufferSize: LPDWORD,
372         lpdwBufferCount: LPDWORD,
373         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W,
374     ) -> PDH_STATUS;
PdhCalculateCounterFromRawValue( hCounter: PDH_HCOUNTER, dwFormat: DWORD, rawValue1: PPDH_RAW_COUNTER, rawValue2: PPDH_RAW_COUNTER, fmtValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS375     pub fn PdhCalculateCounterFromRawValue(
376         hCounter: PDH_HCOUNTER,
377         dwFormat: DWORD,
378         rawValue1: PPDH_RAW_COUNTER,
379         rawValue2: PPDH_RAW_COUNTER,
380         fmtValue: PPDH_FMT_COUNTERVALUE,
381     ) -> PDH_STATUS;
PdhComputeCounterStatistics( hCounter: PDH_HCOUNTER, dwFormat: DWORD, dwFirstEntry: DWORD, dwNumEntries: DWORD, lpRawValueArray: PPDH_RAW_COUNTER, data: PPDH_STATISTICS, ) -> PDH_STATUS382     pub fn PdhComputeCounterStatistics(
383         hCounter: PDH_HCOUNTER,
384         dwFormat: DWORD,
385         dwFirstEntry: DWORD,
386         dwNumEntries: DWORD,
387         lpRawValueArray: PPDH_RAW_COUNTER,
388         data: PPDH_STATISTICS,
389     ) -> PDH_STATUS;
PdhGetCounterInfoW( hCounter: PDH_HCOUNTER, bRetrieveExplainText: BOOLEAN, pdwBufferSize: LPDWORD, lpBuffer: PPDH_COUNTER_INFO_W, ) -> PDH_STATUS390     pub fn PdhGetCounterInfoW(
391         hCounter: PDH_HCOUNTER,
392         bRetrieveExplainText: BOOLEAN,
393         pdwBufferSize: LPDWORD,
394         lpBuffer: PPDH_COUNTER_INFO_W,
395     ) -> PDH_STATUS;
PdhGetCounterInfoA( hCounter: PDH_HCOUNTER, bRetrieveExplainText: BOOLEAN, pdwBufferSize: LPDWORD, lpBuffer: PPDH_COUNTER_INFO_A, ) -> PDH_STATUS396     pub fn PdhGetCounterInfoA(
397         hCounter: PDH_HCOUNTER,
398         bRetrieveExplainText: BOOLEAN,
399         pdwBufferSize: LPDWORD,
400         lpBuffer: PPDH_COUNTER_INFO_A,
401     ) -> PDH_STATUS;
PdhSetCounterScaleFactor( hCounter: PDH_HCOUNTER, lFactor: LONG, ) -> PDH_STATUS402     pub fn PdhSetCounterScaleFactor(
403         hCounter: PDH_HCOUNTER,
404         lFactor: LONG,
405     ) -> PDH_STATUS;
PdhConnectMachineW( szMachineName: LPCWSTR, ) -> PDH_STATUS406     pub fn PdhConnectMachineW(
407         szMachineName: LPCWSTR,
408     ) -> PDH_STATUS;
PdhConnectMachineA( szMachineName: LPCSTR, ) -> PDH_STATUS409     pub fn PdhConnectMachineA(
410         szMachineName: LPCSTR,
411     ) -> PDH_STATUS;
PdhEnumMachinesW( szDataSource: LPCWSTR, mszMachineNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS412     pub fn PdhEnumMachinesW(
413         szDataSource: LPCWSTR,
414         mszMachineNameList: LPWSTR,
415         pcchBufferLength: LPDWORD,
416     ) -> PDH_STATUS;
PdhEnumMachinesA( szDataSource: LPCSTR, mszMachineNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS417     pub fn PdhEnumMachinesA(
418         szDataSource: LPCSTR,
419         mszMachineNameList: LPSTR,
420         pcchBufferLength: LPDWORD,
421     ) -> PDH_STATUS;
PdhEnumObjectsW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, mszObjectList: LPWSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS422     pub fn PdhEnumObjectsW(
423         szDataSource: LPCWSTR,
424         szMachineName: LPCWSTR,
425         mszObjectList: LPWSTR,
426         pcchBufferLength: LPDWORD,
427         dwDetailLevel: DWORD,
428         bRefresh: BOOL,
429     ) -> PDH_STATUS;
PdhEnumObjectsA( szDataSource: LPCSTR, szMachineName: LPCSTR, mszObjectList: LPSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS430     pub fn PdhEnumObjectsA(
431         szDataSource: LPCSTR,
432         szMachineName: LPCSTR,
433         mszObjectList: LPSTR,
434         pcchBufferLength: LPDWORD,
435         dwDetailLevel: DWORD,
436         bRefresh: BOOL,
437     ) -> PDH_STATUS;
PdhEnumObjectItemsW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szObjectName: LPCWSTR, mszCounterList: LPWSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPWSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS438     pub fn PdhEnumObjectItemsW(
439         szDataSource: LPCWSTR,
440         szMachineName: LPCWSTR,
441         szObjectName: LPCWSTR,
442         mszCounterList: LPWSTR,
443         pcchCounterListLength: LPDWORD,
444         mszInstanceList: LPWSTR,
445         pcchInstanceListLength: LPDWORD,
446         dwDetailLevel: DWORD,
447         dwFlags: DWORD,
448     ) -> PDH_STATUS;
PdhEnumObjectItemsA( szDataSource: LPCSTR, szMachineName: LPCSTR, szObjectName: LPCSTR, mszCounterList: LPSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS449     pub fn PdhEnumObjectItemsA(
450         szDataSource: LPCSTR,
451         szMachineName: LPCSTR,
452         szObjectName: LPCSTR,
453         mszCounterList: LPSTR,
454         pcchCounterListLength: LPDWORD,
455         mszInstanceList: LPSTR,
456         pcchInstanceListLength: LPDWORD,
457         dwDetailLevel: DWORD,
458         dwFlags: DWORD,
459     ) -> PDH_STATUS;
PdhMakeCounterPathW( pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W, szFullPathBuffer: LPWSTR, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS460     pub fn PdhMakeCounterPathW(
461         pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W,
462         szFullPathBuffer: LPWSTR,
463         pcchBufferSize: LPDWORD,
464         dwFlags: DWORD,
465     ) -> PDH_STATUS;
PdhMakeCounterPathA( pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A, szFullPathBuffer: LPSTR, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS466     pub fn PdhMakeCounterPathA(
467         pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A,
468         szFullPathBuffer: LPSTR,
469         pcchBufferSize: LPDWORD,
470         dwFlags: DWORD,
471     ) -> PDH_STATUS;
PdhParseCounterPathW( szFullPathBuffer: LPCWSTR, pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_W, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS472     pub fn PdhParseCounterPathW(
473         szFullPathBuffer: LPCWSTR,
474         pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_W,
475         pcchBufferSize: LPDWORD,
476         dwFlags: DWORD,
477     ) -> PDH_STATUS;
PdhParseCounterPathA( szFullPathBuffer: LPCSTR, pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_A, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS478     pub fn PdhParseCounterPathA(
479         szFullPathBuffer: LPCSTR,
480         pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_A,
481         pcchBufferSize: LPDWORD,
482         dwFlags: DWORD,
483     ) -> PDH_STATUS;
PdhParseInstanceNameW( szInstanceString: LPCWSTR, szInstanceName: LPWSTR, pcchInstanceNameLength: LPDWORD, szParentName: LPWSTR, pcchParentNameLength: LPDWORD, lpIndex: LPDWORD, ) -> PDH_STATUS484     pub fn PdhParseInstanceNameW(
485         szInstanceString: LPCWSTR,
486         szInstanceName: LPWSTR,
487         pcchInstanceNameLength: LPDWORD,
488         szParentName: LPWSTR,
489         pcchParentNameLength: LPDWORD,
490         lpIndex: LPDWORD,
491     ) -> PDH_STATUS;
PdhParseInstanceNameA( szInstanceString: LPCSTR, szInstanceName: LPSTR, pcchInstanceNameLength: LPDWORD, szParentName: LPSTR, pcchParentNameLength: LPDWORD, lpIndex: LPDWORD, ) -> PDH_STATUS492     pub fn PdhParseInstanceNameA(
493         szInstanceString: LPCSTR,
494         szInstanceName: LPSTR,
495         pcchInstanceNameLength: LPDWORD,
496         szParentName: LPSTR,
497         pcchParentNameLength: LPDWORD,
498         lpIndex: LPDWORD,
499     ) -> PDH_STATUS;
PdhValidatePathW( szFullCounterPath: LPCWSTR, ) -> PDH_STATUS500     pub fn PdhValidatePathW(
501         szFullCounterPath: LPCWSTR,
502     ) -> PDH_STATUS;
PdhValidatePathA( szFullCounterPath: LPCSTR, ) -> PDH_STATUS503     pub fn PdhValidatePathA(
504         szFullCounterPath: LPCSTR,
505     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szDefaultObjectName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS506     pub fn PdhGetDefaultPerfObjectW(
507         szDataSource: LPCWSTR,
508         szMachineName: LPCWSTR,
509         szDefaultObjectName: LPWSTR,
510         pcchBufferSize: LPDWORD,
511     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectA( szDataSource: LPCSTR, szMachineName: LPCSTR, szDefaultObjectName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS512     pub fn PdhGetDefaultPerfObjectA(
513         szDataSource: LPCSTR,
514         szMachineName: LPCSTR,
515         szDefaultObjectName: LPSTR,
516         pcchBufferSize: LPDWORD,
517     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szObjectName: LPCWSTR, szDefaultCounterName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS518     pub fn PdhGetDefaultPerfCounterW(
519         szDataSource: LPCWSTR,
520         szMachineName: LPCWSTR,
521         szObjectName: LPCWSTR,
522         szDefaultCounterName: LPWSTR,
523         pcchBufferSize: LPDWORD,
524     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterA( szDataSource: LPCSTR, szMachineName: LPCSTR, szObjectName: LPCSTR, szDefaultCounterName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS525     pub fn PdhGetDefaultPerfCounterA(
526         szDataSource: LPCSTR,
527         szMachineName: LPCSTR,
528         szObjectName: LPCSTR,
529         szDefaultCounterName: LPSTR,
530         pcchBufferSize: LPDWORD,
531     ) -> PDH_STATUS;
PdhBrowseCountersW( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_W, ) -> PDH_STATUS532     pub fn PdhBrowseCountersW(
533         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_W,
534     ) -> PDH_STATUS;
PdhBrowseCountersA( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_A, ) -> PDH_STATUS535     pub fn PdhBrowseCountersA(
536         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_A,
537     ) -> PDH_STATUS;
PdhExpandCounterPathW( szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, ) -> PDH_STATUS538     pub fn PdhExpandCounterPathW(
539         szWildCardPath: LPCWSTR,
540         mszExpandedPathList: LPWSTR,
541         pcchPathListLength: LPDWORD,
542     ) -> PDH_STATUS;
PdhExpandCounterPathA( szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, ) -> PDH_STATUS543     pub fn PdhExpandCounterPathA(
544         szWildCardPath: LPCSTR,
545         mszExpandedPathList: LPSTR,
546         pcchPathListLength: LPDWORD,
547     ) -> PDH_STATUS;
PdhLookupPerfNameByIndexW( szMachineName: LPCWSTR, dwNameIndex: DWORD, szNameBuffer: LPWSTR, pcchNameBufferSize: LPDWORD, ) -> PDH_STATUS548     pub fn PdhLookupPerfNameByIndexW(
549         szMachineName: LPCWSTR,
550         dwNameIndex: DWORD,
551         szNameBuffer: LPWSTR,
552         pcchNameBufferSize: LPDWORD,
553     ) -> PDH_STATUS;
PdhLookupPerfNameByIndexA( szMachineName: LPCSTR, dwNameIndex: DWORD, szNameBuffer: LPSTR, pcchNameBufferSize: LPDWORD, ) -> PDH_STATUS554     pub fn PdhLookupPerfNameByIndexA(
555         szMachineName: LPCSTR,
556         dwNameIndex: DWORD,
557         szNameBuffer: LPSTR,
558         pcchNameBufferSize: LPDWORD,
559     ) -> PDH_STATUS;
PdhLookupPerfIndexByNameW( szMachineName: LPCWSTR, szNameBuffer: LPCWSTR, pdwIndex: LPDWORD, ) -> PDH_STATUS560     pub fn PdhLookupPerfIndexByNameW(
561         szMachineName: LPCWSTR,
562         szNameBuffer: LPCWSTR,
563         pdwIndex: LPDWORD,
564     ) -> PDH_STATUS;
PdhLookupPerfIndexByNameA( szMachineName: LPCSTR, szNameBuffer: LPCSTR, pdwIndex: LPDWORD, ) -> PDH_STATUS565     pub fn PdhLookupPerfIndexByNameA(
566         szMachineName: LPCSTR,
567         szNameBuffer: LPCSTR,
568         pdwIndex: LPDWORD,
569     ) -> PDH_STATUS;
PdhExpandWildCardPathW( szDataSource: LPCWSTR, szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS570     pub fn PdhExpandWildCardPathW(
571         szDataSource: LPCWSTR,
572         szWildCardPath: LPCWSTR,
573         mszExpandedPathList: LPWSTR,
574         pcchPathListLength: LPDWORD,
575         dwFlags: DWORD,
576     ) -> PDH_STATUS;
PdhExpandWildCardPathA( szDataSource: LPCSTR, szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS577     pub fn PdhExpandWildCardPathA(
578         szDataSource: LPCSTR,
579         szWildCardPath: LPCSTR,
580         mszExpandedPathList: LPSTR,
581         pcchPathListLength: LPDWORD,
582         dwFlags: DWORD,
583     ) -> PDH_STATUS;
PdhOpenLogW( szLogFileName: LPCWSTR, dwAccessFlags: DWORD, lpdwLogType: LPDWORD, hQuery: PDH_HQUERY, dwMaxSize: DWORD, szUserCaption: LPCWSTR, phLog: *mut PDH_HLOG, ) -> PDH_STATUS584     pub fn PdhOpenLogW(
585         szLogFileName: LPCWSTR,
586         dwAccessFlags: DWORD,
587         lpdwLogType: LPDWORD,
588         hQuery: PDH_HQUERY,
589         dwMaxSize: DWORD,
590         szUserCaption: LPCWSTR,
591         phLog: *mut PDH_HLOG,
592     ) -> PDH_STATUS;
PdhOpenLogA( szLogFileName: LPCSTR, dwAccessFlags: DWORD, lpdwLogType: LPDWORD, hQuery: PDH_HQUERY, dwMaxSize: DWORD, szUserCaption: LPCSTR, phLog: *mut PDH_HLOG, ) -> PDH_STATUS593     pub fn PdhOpenLogA(
594         szLogFileName: LPCSTR,
595         dwAccessFlags: DWORD,
596         lpdwLogType: LPDWORD,
597         hQuery: PDH_HQUERY,
598         dwMaxSize: DWORD,
599         szUserCaption: LPCSTR,
600         phLog: *mut PDH_HLOG,
601     ) -> PDH_STATUS;
PdhUpdateLogW( hLog: PDH_HLOG, szUserString: LPCWSTR, ) -> PDH_STATUS602     pub fn PdhUpdateLogW(
603         hLog: PDH_HLOG,
604         szUserString: LPCWSTR,
605     ) -> PDH_STATUS;
PdhUpdateLogA( hLog: PDH_HLOG, szUserString: LPCSTR, ) -> PDH_STATUS606     pub fn PdhUpdateLogA(
607         hLog: PDH_HLOG,
608         szUserString: LPCSTR,
609     ) -> PDH_STATUS;
PdhUpdateLogFileCatalog( hLog: PDH_HLOG, ) -> PDH_STATUS610     pub fn PdhUpdateLogFileCatalog(
611         hLog: PDH_HLOG,
612     ) -> PDH_STATUS;
PdhGetLogFileSize( hLog: PDH_HLOG, llSize: *mut LONGLONG, ) -> PDH_STATUS613     pub fn PdhGetLogFileSize(
614         hLog: PDH_HLOG,
615         llSize: *mut LONGLONG,
616     ) -> PDH_STATUS;
PdhCloseLog( hLog: PDH_HLOG, dwFlags: DWORD, ) -> PDH_STATUS617     pub fn PdhCloseLog(
618         hLog: PDH_HLOG,
619         dwFlags: DWORD,
620     ) -> PDH_STATUS;
PdhSelectDataSourceW( hWndOwner: HWND, dwFlags: DWORD, szDataSource: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS621     pub fn PdhSelectDataSourceW(
622         hWndOwner: HWND,
623         dwFlags: DWORD,
624         szDataSource: LPWSTR,
625         pcchBufferLength: LPDWORD,
626     ) -> PDH_STATUS;
PdhSelectDataSourceA( hWndOwner: HWND, dwFlags: DWORD, szDataSource: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS627     pub fn PdhSelectDataSourceA(
628         hWndOwner: HWND,
629         dwFlags: DWORD,
630         szDataSource: LPSTR,
631         pcchBufferLength: LPDWORD,
632     ) -> PDH_STATUS;
PdhIsRealTimeQuery( hQuery: PDH_HQUERY, ) -> PDH_STATUS633     pub fn PdhIsRealTimeQuery(
634         hQuery: PDH_HQUERY,
635     ) -> PDH_STATUS;
PdhSetQueryTimeRange( hQuery: PDH_HQUERY, pInfo: PPDH_TIME_INFO, ) -> PDH_STATUS636     pub fn PdhSetQueryTimeRange(
637         hQuery: PDH_HQUERY,
638         pInfo: PPDH_TIME_INFO,
639     ) -> PDH_STATUS;
PdhGetDataSourceTimeRangeW( szDataSource: LPCWSTR, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS640     pub fn PdhGetDataSourceTimeRangeW(
641         szDataSource: LPCWSTR,
642         pdwNumEntries: LPDWORD,
643         pInfo: PPDH_TIME_INFO,
644         pdwBufferSize: LPDWORD,
645     ) -> PDH_STATUS;
PdhGetDataSourceTimeRangeA( szDataSource: LPCSTR, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS646     pub fn PdhGetDataSourceTimeRangeA(
647         szDataSource: LPCSTR,
648         pdwNumEntries: LPDWORD,
649         pInfo: PPDH_TIME_INFO,
650         pdwBufferSize: LPDWORD,
651     ) -> PDH_STATUS;
PdhCollectQueryDataEx( hQuery: PDH_HQUERY, dwIntervalTime: DWORD, hNewDataEvent: HANDLE, ) -> PDH_STATUS652     pub fn PdhCollectQueryDataEx(
653         hQuery: PDH_HQUERY,
654         dwIntervalTime: DWORD,
655         hNewDataEvent: HANDLE,
656     ) -> PDH_STATUS;
PdhFormatFromRawValue( dwCounterType: DWORD, dwFormat: DWORD, pTimeBase: *mut LONGLONG, rawValue1: PPDH_RAW_COUNTER, rawValue2: PPDH_RAW_COUNTER, fmtValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS657     pub fn PdhFormatFromRawValue(
658         dwCounterType: DWORD,
659         dwFormat: DWORD,
660         pTimeBase: *mut LONGLONG,
661         rawValue1: PPDH_RAW_COUNTER,
662         rawValue2: PPDH_RAW_COUNTER,
663         fmtValue: PPDH_FMT_COUNTERVALUE,
664     ) -> PDH_STATUS;
PdhGetCounterTimeBase( hCounter: PDH_HCOUNTER, pTimeBase: *mut LONGLONG, ) -> PDH_STATUS665     pub fn PdhGetCounterTimeBase(
666         hCounter: PDH_HCOUNTER,
667         pTimeBase: *mut LONGLONG,
668     ) -> PDH_STATUS;
PdhReadRawLogRecord( hLog: PDH_HLOG, ftRecord: FILETIME, pRawLogRecord: PPDH_RAW_LOG_RECORD, pdwBufferLength: LPDWORD, ) -> PDH_STATUS669     pub fn PdhReadRawLogRecord(
670         hLog: PDH_HLOG,
671         ftRecord: FILETIME,
672         pRawLogRecord: PPDH_RAW_LOG_RECORD,
673         pdwBufferLength: LPDWORD,
674     ) -> PDH_STATUS;
PdhSetDefaultRealTimeDataSource( dwDataSourceId: DWORD, ) -> PDH_STATUS675     pub fn PdhSetDefaultRealTimeDataSource(
676         dwDataSourceId: DWORD,
677     ) -> PDH_STATUS;
PdhBindInputDataSourceW( phDataSource: *mut PDH_HLOG, szLogFileNameList: LPCWSTR, ) -> PDH_STATUS678     pub fn PdhBindInputDataSourceW(
679         phDataSource: *mut PDH_HLOG,
680         szLogFileNameList: LPCWSTR,
681     ) -> PDH_STATUS;
PdhBindInputDataSourceA( phDataSource: *mut PDH_HLOG, szLogFileNameList: LPCSTR, ) -> PDH_STATUS682     pub fn PdhBindInputDataSourceA(
683         phDataSource: *mut PDH_HLOG,
684         szLogFileNameList: LPCSTR,
685     ) -> PDH_STATUS;
PdhOpenQueryH( hDataSource: PDH_HLOG, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS686     pub fn PdhOpenQueryH(
687         hDataSource: PDH_HLOG,
688         dwUserData: DWORD_PTR,
689         phQuery: *mut PDH_HQUERY,
690     ) -> PDH_STATUS;
PdhEnumMachinesHW( hDataSource: PDH_HLOG, mszMachineNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS691     pub fn PdhEnumMachinesHW(
692         hDataSource: PDH_HLOG,
693         mszMachineNameList: LPWSTR,
694         pcchBufferLength: LPDWORD,
695     ) -> PDH_STATUS;
PdhEnumMachinesHA( hDataSource: PDH_HLOG, mszMachineNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS696     pub fn PdhEnumMachinesHA(
697         hDataSource: PDH_HLOG,
698         mszMachineNameList: LPSTR,
699         pcchBufferLength: LPDWORD,
700     ) -> PDH_STATUS;
PdhEnumObjectsHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, mszObjectList: LPWSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS701     pub fn PdhEnumObjectsHW(
702         hDataSource: PDH_HLOG,
703         szMachineName: LPCWSTR,
704         mszObjectList: LPWSTR,
705         pcchBufferLength: LPDWORD,
706         dwDetailLevel: DWORD,
707         bRefresh: BOOL,
708     ) -> PDH_STATUS;
PdhEnumObjectsHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, mszObjectList: LPSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS709     pub fn PdhEnumObjectsHA(
710         hDataSource: PDH_HLOG,
711         szMachineName: LPCSTR,
712         mszObjectList: LPSTR,
713         pcchBufferLength: LPDWORD,
714         dwDetailLevel: DWORD,
715         bRefresh: BOOL,
716     ) -> PDH_STATUS;
PdhEnumObjectItemsHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szObjectName: LPCWSTR, mszCounterList: LPWSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPWSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS717     pub fn PdhEnumObjectItemsHW(
718         hDataSource: PDH_HLOG,
719         szMachineName: LPCWSTR,
720         szObjectName: LPCWSTR,
721         mszCounterList: LPWSTR,
722         pcchCounterListLength: LPDWORD,
723         mszInstanceList: LPWSTR,
724         pcchInstanceListLength: LPDWORD,
725         dwDetailLevel: DWORD,
726         dwFlags: DWORD,
727     ) -> PDH_STATUS;
PdhEnumObjectItemsHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szObjectName: LPCSTR, mszCounterList: LPSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS728     pub fn PdhEnumObjectItemsHA(
729         hDataSource: PDH_HLOG,
730         szMachineName: LPCSTR,
731         szObjectName: LPCSTR,
732         mszCounterList: LPSTR,
733         pcchCounterListLength: LPDWORD,
734         mszInstanceList: LPSTR,
735         pcchInstanceListLength: LPDWORD,
736         dwDetailLevel: DWORD,
737         dwFlags: DWORD,
738     ) -> PDH_STATUS;
PdhExpandWildCardPathHW( hDataSource: PDH_HLOG, szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS739     pub fn PdhExpandWildCardPathHW(
740         hDataSource: PDH_HLOG,
741         szWildCardPath: LPCWSTR,
742         mszExpandedPathList: LPWSTR,
743         pcchPathListLength: LPDWORD,
744         dwFlags: DWORD,
745     ) -> PDH_STATUS;
PdhExpandWildCardPathHA( hDataSource: PDH_HLOG, szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS746     pub fn PdhExpandWildCardPathHA(
747         hDataSource: PDH_HLOG,
748         szWildCardPath: LPCSTR,
749         mszExpandedPathList: LPSTR,
750         pcchPathListLength: LPDWORD,
751         dwFlags: DWORD,
752     ) -> PDH_STATUS;
PdhGetDataSourceTimeRangeH( hDataSource: PDH_HLOG, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS753     pub fn PdhGetDataSourceTimeRangeH(
754         hDataSource: PDH_HLOG,
755         pdwNumEntries: LPDWORD,
756         pInfo: PPDH_TIME_INFO,
757         pdwBufferSize: LPDWORD,
758     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szDefaultObjectName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS759     pub fn PdhGetDefaultPerfObjectHW(
760         hDataSource: PDH_HLOG,
761         szMachineName: LPCWSTR,
762         szDefaultObjectName: LPWSTR,
763         pcchBufferSize: LPDWORD,
764     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szDefaultObjectName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS765     pub fn PdhGetDefaultPerfObjectHA(
766         hDataSource: PDH_HLOG,
767         szMachineName: LPCSTR,
768         szDefaultObjectName: LPSTR,
769         pcchBufferSize: LPDWORD,
770     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szObjectName: LPCWSTR, szDefaultCounterName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS771     pub fn PdhGetDefaultPerfCounterHW(
772         hDataSource: PDH_HLOG,
773         szMachineName: LPCWSTR,
774         szObjectName: LPCWSTR,
775         szDefaultCounterName: LPWSTR,
776         pcchBufferSize: LPDWORD,
777     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szObjectName: LPCSTR, szDefaultCounterName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS778     pub fn PdhGetDefaultPerfCounterHA(
779         hDataSource: PDH_HLOG,
780         szMachineName: LPCSTR,
781         szObjectName: LPCSTR,
782         szDefaultCounterName: LPSTR,
783         pcchBufferSize: LPDWORD,
784     ) -> PDH_STATUS;
PdhBrowseCountersHW( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HW, ) -> PDH_STATUS785     pub fn PdhBrowseCountersHW(
786         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HW,
787     ) -> PDH_STATUS;
PdhBrowseCountersHA( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HA, ) -> PDH_STATUS788     pub fn PdhBrowseCountersHA(
789         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HA,
790     ) -> PDH_STATUS;
PdhEnumLogSetNamesW( szDataSource: LPCWSTR, mszLogSetNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS791     pub fn PdhEnumLogSetNamesW(
792         szDataSource: LPCWSTR,
793         mszLogSetNameList: LPWSTR,
794         pcchBufferLength: LPDWORD,
795     ) -> PDH_STATUS;
PdhEnumLogSetNamesA( szDataSource: LPCSTR, mszLogSetNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS796     pub fn PdhEnumLogSetNamesA(
797         szDataSource: LPCSTR,
798         mszLogSetNameList: LPSTR,
799         pcchBufferLength: LPDWORD,
800     ) -> PDH_STATUS;
801 }
802 // pub fn PdhVerifySQLDBW() -> PDH_STATUS;
803 // pub fn PdhVerifySQLDBA() -> PDH_STATUS;
804 // pub fn PdhCreateSQLTablesW() -> PDH_STATUS;
805 // pub fn PdhCreateSQLTablesA() -> PDH_STATUS;
806 //pub fn PdhGetLogSetGUID() -> PDH_STATUS;
807 // pub fn PdhSetLogSetRunID() -> PDH_STATUS;
808