1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Common Performance Data Helper definitions
7 use ctypes::c_double;
8 use shared::basetsd::DWORD_PTR;
9 use shared::guiddef::GUID;
10 use shared::minwindef::{BOOL, DWORD, FILETIME, LPDWORD, UCHAR};
11 use shared::windef::HWND;
12 use um::winnt::{BOOLEAN, HANDLE, LONG, LONGLONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
13 pub const PDH_FMT_RAW: DWORD = 0x00000010;
14 pub const PDH_FMT_ANSI: DWORD = 0x00000020;
15 pub const PDH_FMT_UNICODE: DWORD = 0x00000040;
16 pub const PDH_FMT_LONG: DWORD = 0x00000100;
17 pub const PDH_FMT_DOUBLE: DWORD = 0x00000200;
18 pub const PDH_FMT_LARGE: DWORD = 0x00000400;
19 pub const PDH_FMT_NOSCALE: DWORD = 0x00001000;
20 pub const PDH_FMT_1000: DWORD = 0x00002000;
21 pub const PDH_FMT_NODATA: DWORD = 0x00004000;
22 pub const PDH_FMT_NOCAP100: DWORD = 0x00008000;
23 pub const PERF_DETAIL_COSTLY: DWORD = 0x00010000;
24 pub const PERF_DETAIL_STANDARD: DWORD = 0x0000FFFF;
25 pub type PDH_STATUS = LONG;
26 pub type PDH_HQUERY = HANDLE;
27 pub type HQUERY = PDH_HQUERY;
28 pub type PDH_HCOUNTER = HANDLE;
29 pub type HCOUNTER = PDH_HCOUNTER;
30 pub type PPDH_BROWSE_DLG_CONFIG_A = *mut PDH_BROWSE_DLG_CONFIG_A;
31 pub type PPDH_BROWSE_DLG_CONFIG_W = *mut PDH_BROWSE_DLG_CONFIG_W;
32 pub type PDH_HLOG = HANDLE;
33 pub type PPDH_RAW_LOG_RECORD = *mut PDH_RAW_LOG_RECORD;
34 pub type PPDH_TIME_INFO = *mut PDH_TIME_INFO;
35 pub type PPDH_RAW_COUNTER = *mut PDH_RAW_COUNTER;
36 pub type PPDH_COUNTER_INFO_A = *mut PDH_COUNTER_INFO_A;
37 pub type PPDH_COUNTER_INFO_W = *mut PDH_COUNTER_INFO_W;
38 pub type PPDH_STATISTICS = *mut PDH_STATISTICS;
39 pub type PPDH_FMT_COUNTERVALUE_ITEM_A = *mut PDH_FMT_COUNTERVALUE_ITEM_A;
40 pub type PPDH_FMT_COUNTERVALUE_ITEM_W = *mut PDH_FMT_COUNTERVALUE_ITEM_W;
41 pub type PPDH_DATA_ITEM_PATH_ELEMENTS_A = *mut PDH_DATA_ITEM_PATH_ELEMENTS_A;
42 pub type PPDH_DATA_ITEM_PATH_ELEMENTS_W = *mut PDH_DATA_ITEM_PATH_ELEMENTS_W;
43 pub type PPDH_FMT_COUNTERVALUE = *mut PDH_FMT_COUNTERVALUE;
44 FN!{stdcall CounterPathCallBack(
45     DWORD_PTR,
46 ) -> PDH_STATUS}
47 pub type PPDH_COUNTER_PATH_ELEMENTS_A = *mut PDH_COUNTER_PATH_ELEMENTS_A;
48 pub type PPDH_COUNTER_PATH_ELEMENTS_W = *mut PDH_COUNTER_PATH_ELEMENTS_W;
49 pub type PPDH_BROWSE_DLG_CONFIG_HA = *mut PDH_BROWSE_DLG_CONFIG_HA;
50 pub type PPDH_BROWSE_DLG_CONFIG_HW = *mut PDH_BROWSE_DLG_CONFIG_HW;
51 UNION!{union PDH_FMT_COUNTERVALUE_u {
52     [u64; 1],
53     longValue longValue_mut: LONG,
54     doubleValue doubleValue_mut: c_double,
55     largeValue largeValue_mut: LONGLONG,
56     AnsiStringValue AnsiStringValue_mut: LPCSTR,
57     WideStringValue WideStringValue_mut: LPCWSTR,
58 }}
59 STRUCT!{struct PDH_FMT_COUNTERVALUE {
60     CStatus: DWORD,
61     u: PDH_FMT_COUNTERVALUE_u,
62 }}
63 STRUCT!{struct PDH_RAW_LOG_RECORD {
64     dwStructureSize: DWORD,
65     dwRecordType: DWORD,
66     dwItems: DWORD,
67     RawBytes: UCHAR,
68 }}
69 STRUCT!{struct PDH_TIME_INFO {
70     StartTime: LONGLONG,
71     EndTime: LONGLONG,
72     SampleCount: DWORD,
73 }}
74 STRUCT!{struct PDH_RAW_COUNTER {
75     CStatus: DWORD,
76     TimeStamp: FILETIME,
77     FirstValue: LONGLONG,
78     SecondValue: LONGLONG,
79     MultiCount: DWORD,
80 }}
81 STRUCT!{struct PDH_STATISTICS {
82     dwFormat: DWORD,
83     count: DWORD,
84     min: PDH_FMT_COUNTERVALUE,
85     max: PDH_FMT_COUNTERVALUE,
86     mean: PDH_FMT_COUNTERVALUE,
87 }}
88 STRUCT!{struct PDH_FMT_COUNTERVALUE_ITEM_A {
89     szName: LPSTR,
90     FmtValue: PDH_FMT_COUNTERVALUE,
91 }}
92 STRUCT!{struct PDH_FMT_COUNTERVALUE_ITEM_W {
93     szName: LPWSTR,
94     FmtValue: PDH_FMT_COUNTERVALUE,
95 }}
96 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_A {
97     flags: DWORD,
98     hWndOwner: HWND,
99     szDataSource: LPSTR,
100     szReturnPathBuffer: LPSTR,
101     cchReturnPathLength: DWORD,
102     pCallBack: CounterPathCallBack,
103     dwCallBackArg: DWORD_PTR,
104     CallBackStatus: PDH_STATUS,
105     dwDefaultDetailLevel: DWORD,
106     szDialogBoxCaption: LPSTR,
107 }}
108 BITFIELD!{PDH_BROWSE_DLG_CONFIG_A flags: DWORD [
109     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
110     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
111     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
112     LocalCountersOnly set_LocalCountersOnly[3..4],
113     WildCardInstances set_WildCardInstances[4..5],
114     HideDetailBox set_HideDetailBox[5..6],
115     InitializePath set_InitializePath[6..7],
116     DisableMachineSelection set_DisableMachineSelection[7..8],
117     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
118     ShowObjectBrowser set_ShowObjectBrowser[9..10],
119 ]}
120 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_W {
121     flags: DWORD,
122     hWndOwner: HWND,
123     szDataSource: LPWSTR,
124     szReturnPathBuffer: LPWSTR,
125     cchReturnPathLength: DWORD,
126     pCallBack: CounterPathCallBack,
127     dwCallBackArg: DWORD_PTR,
128     CallBackStatus: PDH_STATUS,
129     dwDefaultDetailLevel: DWORD,
130     szDialogBoxCaption: LPWSTR,
131 }}
132 BITFIELD!{PDH_BROWSE_DLG_CONFIG_W flags: DWORD [
133     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
134     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
135     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
136     LocalCountersOnly set_LocalCountersOnly[3..4],
137     WildCardInstances set_WildCardInstances[4..5],
138     HideDetailBox set_HideDetailBox[5..6],
139     InitializePath set_InitializePath[6..7],
140     DisableMachineSelection set_DisableMachineSelection[7..8],
141     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
142     ShowObjectBrowser set_ShowObjectBrowser[9..10],
143 ]}
144 STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_A {
145     szMachineName: LPSTR,
146     szObjectName: LPSTR,
147     szInstanceName: LPSTR,
148     szParentInstance: LPSTR,
149     dwInstanceIndex: DWORD,
150     szCounterName: LPSTR,
151 }}
152 STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_W {
153     szMachineName: LPWSTR,
154     szObjectName: LPWSTR,
155     szInstanceName: LPWSTR,
156     szParentInstance: LPWSTR,
157     dwInstanceIndex: DWORD,
158     szCounterName: LPWSTR,
159 }}
160 STRUCT!{struct PDH_DATA_ITEM_PATH_ELEMENTS_A {
161     szMachineName: LPSTR,
162     ObjectGUID: GUID,
163     dwItemId: DWORD,
164     szInstanceName: LPSTR,
165 }}
166 STRUCT!{struct PDH_DATA_ITEM_PATH_ELEMENTS_W {
167     szMachineName: LPWSTR,
168     ObjectGUID: GUID,
169     dwItemId: DWORD,
170     szInstanceName: LPWSTR,
171 }}
172 STRUCT!{struct PDH_COUNTER_INFO_A_u_s {
173     szMachineName: LPSTR,
174     szObjectName: LPSTR,
175     szInstanceName: LPSTR,
176     szParentInstance: LPSTR,
177     dwInstanceIndex: DWORD,
178     szCounterName: LPSTR,
179 }}
180 UNION!{union PDH_COUNTER_INFO_A_u {
181     [u32; 7] [u64; 6],
182     DataItemPath DataItemPath_mut: PDH_DATA_ITEM_PATH_ELEMENTS_A,
183     CounterPath CounterPath_mut: PDH_COUNTER_PATH_ELEMENTS_A,
184     s s_mut: PDH_COUNTER_INFO_A_u_s,
185 }}
186 STRUCT!{struct PDH_COUNTER_INFO_A {
187     dwLength: DWORD,
188     dwType: DWORD,
189     CVersion: DWORD,
190     CStatus: DWORD,
191     lScale: LONG,
192     lDefaultScale: LONG,
193     dwUserData: DWORD_PTR,
194     dwQueryUserData: DWORD_PTR,
195     szFullPath: LPSTR,
196     u: PDH_COUNTER_INFO_A_u,
197     szExplainText: LPSTR,
198     DataBuffer: [DWORD; 1],
199 }}
200 STRUCT!{struct PDH_COUNTER_INFO_W_u_s {
201     szMachineName: LPWSTR,
202     szObjectName: LPWSTR,
203     szInstanceName: LPWSTR,
204     szParentInstance: LPWSTR,
205     dwInstanceIndex: DWORD,
206     szCounterName: LPWSTR,
207 }}
208 UNION!{union PDH_COUNTER_INFO_W_u {
209     [u32; 7] [u64; 6],
210     DataItemPath DataItemPath_mut: PDH_DATA_ITEM_PATH_ELEMENTS_W,
211     CounterPath CounterPath_mut: PDH_COUNTER_PATH_ELEMENTS_W,
212     s s_mut: PDH_COUNTER_INFO_W_u_s,
213 }}
214 STRUCT!{struct PDH_COUNTER_INFO_W {
215     dwLength: DWORD,
216     dwType: DWORD,
217     CVersion: DWORD,
218     CStatus: DWORD,
219     lScale: LONG,
220     lDefaultScale: LONG,
221     dwUserData: DWORD_PTR,
222     dwQueryUserData: DWORD_PTR,
223     szFullPath: LPWSTR,
224     u: PDH_COUNTER_INFO_W_u,
225     szExplainText: LPWSTR,
226     DataBuffer: [DWORD; 1],
227 }}
228 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_HA {
229     flags: DWORD,
230     hWndOwner: HWND,
231     hDataSource: PDH_HLOG,
232     szReturnPathBuffer: LPSTR,
233     cchReturnPathLength: DWORD,
234     pCallBack: CounterPathCallBack,
235     dwCallBackArg: DWORD_PTR,
236     CallBackStatus: PDH_STATUS,
237     dwDefaultDetailLevel: DWORD,
238     szDialogBoxCaption: LPSTR,
239 }}
240 BITFIELD!{PDH_BROWSE_DLG_CONFIG_HA flags: DWORD [
241     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
242     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
243     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
244     LocalCountersOnly set_LocalCountersOnly[3..4],
245     WildCardInstances set_WildCardInstances[4..5],
246     HideDetailBox set_HideDetailBox[5..6],
247     InitializePath set_InitializePath[6..7],
248     DisableMachineSelection set_DisableMachineSelection[7..8],
249     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
250     ShowObjectBrowser set_ShowObjectBrowser[9..10],
251 ]}
252 STRUCT!{struct PDH_BROWSE_DLG_CONFIG_HW {
253     flags: DWORD,
254     hWndOwner: HWND,
255     hDataSource: PDH_HLOG,
256     szReturnPathBuffer: LPWSTR,
257     cchReturnPathLength: DWORD,
258     pCallBack: CounterPathCallBack,
259     dwCallBackArg: DWORD_PTR,
260     CallBackStatus: PDH_STATUS,
261     dwDefaultDetailLevel: DWORD,
262     szDialogBoxCaption: LPWSTR,
263 }}
264 BITFIELD!{PDH_BROWSE_DLG_CONFIG_HW flags: DWORD [
265     IncludeInstanceIndex set_IncludeInstanceIndex[0..1],
266     SingleCounterPerAdd set_SingleCounterPerAdd[1..2],
267     SingleCounterPerDialog set_SingleCounterPerDialog[2..3],
268     LocalCountersOnly set_LocalCountersOnly[3..4],
269     WildCardInstances set_WildCardInstances[4..5],
270     HideDetailBox set_HideDetailBox[5..6],
271     InitializePath set_InitializePath[6..7],
272     DisableMachineSelection set_DisableMachineSelection[7..8],
273     IncludeCostlyObjects set_IncludeCostlyObjects[8..9],
274     ShowObjectBrowser set_ShowObjectBrowser[9..10],
275 ]}
276 extern "system" {
PdhGetDllVersion( lpdwVersion: LPDWORD, ) -> PDH_STATUS277     pub fn PdhGetDllVersion(
278         lpdwVersion: LPDWORD,
279     ) -> PDH_STATUS;
PdhOpenQueryW( szDataSource: LPCWSTR, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS280     pub fn PdhOpenQueryW(
281         szDataSource: LPCWSTR,
282         dwUserData: DWORD_PTR,
283         phQuery: *mut PDH_HQUERY,
284     ) -> PDH_STATUS;
PdhOpenQueryA( szDataSource: LPCSTR, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS285     pub fn PdhOpenQueryA(
286         szDataSource: LPCSTR,
287         dwUserData: DWORD_PTR,
288         phQuery: *mut PDH_HQUERY,
289     ) -> PDH_STATUS;
PdhAddCounterW( hQuery: PDH_HQUERY, szFullCounterPath: LPCWSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS290     pub fn PdhAddCounterW(
291         hQuery: PDH_HQUERY,
292         szFullCounterPath: LPCWSTR,
293         dwUserData: DWORD_PTR,
294         phCounter: *mut PDH_HCOUNTER,
295     ) -> PDH_STATUS;
PdhAddCounterA( hQuery: PDH_HQUERY, szFullCounterPath: LPCSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS296     pub fn PdhAddCounterA(
297         hQuery: PDH_HQUERY,
298         szFullCounterPath: LPCSTR,
299         dwUserData: DWORD_PTR,
300         phCounter: *mut PDH_HCOUNTER,
301     ) -> PDH_STATUS;
PdhAddEnglishCounterW( hQuery: PDH_HQUERY, szFullCounterPath: LPCWSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS302     pub fn PdhAddEnglishCounterW(
303         hQuery: PDH_HQUERY,
304         szFullCounterPath: LPCWSTR,
305         dwUserData: DWORD_PTR,
306         phCounter: *mut PDH_HCOUNTER,
307     ) -> PDH_STATUS;
PdhAddEnglishCounterA( hQuery: PDH_HQUERY, szFullCounterPath: LPCSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS308     pub fn PdhAddEnglishCounterA(
309         hQuery: PDH_HQUERY,
310         szFullCounterPath: LPCSTR,
311         dwUserData: DWORD_PTR,
312         phCounter: *mut PDH_HCOUNTER,
313     ) -> PDH_STATUS;
PdhCollectQueryDataWithTime( hQuery: PDH_HQUERY, pllTimeStamp: *mut LONGLONG, ) -> PDH_STATUS314     pub fn PdhCollectQueryDataWithTime(
315         hQuery: PDH_HQUERY,
316         pllTimeStamp: *mut LONGLONG,
317     ) -> PDH_STATUS;
PdhValidatePathExW( hDataSource: PDH_HLOG, szFullPathBuffer: LPCWSTR, ) -> PDH_STATUS318     pub fn PdhValidatePathExW(
319         hDataSource: PDH_HLOG,
320         szFullPathBuffer: LPCWSTR,
321     ) -> PDH_STATUS;
PdhValidatePathExA( hDataSource: PDH_HLOG, szFullPathBuffer: LPCSTR, ) -> PDH_STATUS322     pub fn PdhValidatePathExA(
323         hDataSource: PDH_HLOG,
324         szFullPathBuffer: LPCSTR,
325     ) -> PDH_STATUS;
PdhRemoveCounter( hCounter: PDH_HCOUNTER, ) -> PDH_STATUS326     pub fn PdhRemoveCounter(
327         hCounter: PDH_HCOUNTER,
328     ) -> PDH_STATUS;
PdhCollectQueryData( hQuery: PDH_HQUERY, ) -> PDH_STATUS329     pub fn PdhCollectQueryData(
330         hQuery: PDH_HQUERY,
331     ) -> PDH_STATUS;
PdhCloseQuery( hQuery: PDH_HQUERY, ) -> PDH_STATUS332     pub fn PdhCloseQuery(
333         hQuery: PDH_HQUERY,
334     ) -> PDH_STATUS;
PdhGetFormattedCounterValue( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwType: LPDWORD, pValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS335     pub fn PdhGetFormattedCounterValue(
336         hCounter: PDH_HCOUNTER,
337         dwFormat: DWORD,
338         lpdwType: LPDWORD,
339         pValue: PPDH_FMT_COUNTERVALUE,
340     ) -> PDH_STATUS;
PdhGetFormattedCounterArrayA( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A, ) -> PDH_STATUS341     pub fn PdhGetFormattedCounterArrayA(
342         hCounter: PDH_HCOUNTER,
343         dwFormat: DWORD,
344         lpdwBufferSize: LPDWORD,
345         lpdwBufferCount: LPDWORD,
346         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A,
347     ) -> PDH_STATUS;
PdhGetFormattedCounterArrayW( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W, ) -> PDH_STATUS348     pub fn PdhGetFormattedCounterArrayW(
349         hCounter: PDH_HCOUNTER,
350         dwFormat: DWORD,
351         lpdwBufferSize: LPDWORD,
352         lpdwBufferCount: LPDWORD,
353         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W,
354     ) -> PDH_STATUS;
PdhGetRawCounterValue( hCounter: PDH_HCOUNTER, lpdwType: LPDWORD, pValue: PPDH_RAW_COUNTER, ) -> PDH_STATUS355     pub fn PdhGetRawCounterValue(
356         hCounter: PDH_HCOUNTER,
357         lpdwType: LPDWORD,
358         pValue: PPDH_RAW_COUNTER,
359     ) -> PDH_STATUS;
PdhGetRawCounterArrayA( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A, ) -> PDH_STATUS360     pub fn PdhGetRawCounterArrayA(
361         hCounter: PDH_HCOUNTER,
362         dwFormat: DWORD,
363         lpdwBufferSize: LPDWORD,
364         lpdwBufferCount: LPDWORD,
365         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A,
366     ) -> PDH_STATUS;
PdhGetRawCounterArrayW( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W, ) -> PDH_STATUS367     pub fn PdhGetRawCounterArrayW(
368         hCounter: PDH_HCOUNTER,
369         dwFormat: DWORD,
370         lpdwBufferSize: LPDWORD,
371         lpdwBufferCount: LPDWORD,
372         ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W,
373     ) -> PDH_STATUS;
PdhCalculateCounterFromRawValue( hCounter: PDH_HCOUNTER, dwFormat: DWORD, rawValue1: PPDH_RAW_COUNTER, rawValue2: PPDH_RAW_COUNTER, fmtValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS374     pub fn PdhCalculateCounterFromRawValue(
375         hCounter: PDH_HCOUNTER,
376         dwFormat: DWORD,
377         rawValue1: PPDH_RAW_COUNTER,
378         rawValue2: PPDH_RAW_COUNTER,
379         fmtValue: PPDH_FMT_COUNTERVALUE,
380     ) -> PDH_STATUS;
PdhComputeCounterStatistics( hCounter: PDH_HCOUNTER, dwFormat: DWORD, dwFirstEntry: DWORD, dwNumEntries: DWORD, lpRawValueArray: PPDH_RAW_COUNTER, data: PPDH_STATISTICS, ) -> PDH_STATUS381     pub fn PdhComputeCounterStatistics(
382         hCounter: PDH_HCOUNTER,
383         dwFormat: DWORD,
384         dwFirstEntry: DWORD,
385         dwNumEntries: DWORD,
386         lpRawValueArray: PPDH_RAW_COUNTER,
387         data: PPDH_STATISTICS,
388     ) -> PDH_STATUS;
PdhGetCounterInfoW( hCounter: PDH_HCOUNTER, bRetrieveExplainText: BOOLEAN, pdwBufferSize: LPDWORD, lpBuffer: PPDH_COUNTER_INFO_W, ) -> PDH_STATUS389     pub fn PdhGetCounterInfoW(
390         hCounter: PDH_HCOUNTER,
391         bRetrieveExplainText: BOOLEAN,
392         pdwBufferSize: LPDWORD,
393         lpBuffer: PPDH_COUNTER_INFO_W,
394     ) -> PDH_STATUS;
PdhGetCounterInfoA( hCounter: PDH_HCOUNTER, bRetrieveExplainText: BOOLEAN, pdwBufferSize: LPDWORD, lpBuffer: PPDH_COUNTER_INFO_A, ) -> PDH_STATUS395     pub fn PdhGetCounterInfoA(
396         hCounter: PDH_HCOUNTER,
397         bRetrieveExplainText: BOOLEAN,
398         pdwBufferSize: LPDWORD,
399         lpBuffer: PPDH_COUNTER_INFO_A,
400     ) -> PDH_STATUS;
PdhSetCounterScaleFactor( hCounter: PDH_HCOUNTER, lFactor: LONG, ) -> PDH_STATUS401     pub fn PdhSetCounterScaleFactor(
402         hCounter: PDH_HCOUNTER,
403         lFactor: LONG,
404     ) -> PDH_STATUS;
PdhConnectMachineW( szMachineName: LPCWSTR, ) -> PDH_STATUS405     pub fn PdhConnectMachineW(
406         szMachineName: LPCWSTR,
407     ) -> PDH_STATUS;
PdhConnectMachineA( szMachineName: LPCSTR, ) -> PDH_STATUS408     pub fn PdhConnectMachineA(
409         szMachineName: LPCSTR,
410     ) -> PDH_STATUS;
PdhEnumMachinesW( szDataSource: LPCWSTR, mszMachineNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS411     pub fn PdhEnumMachinesW(
412         szDataSource: LPCWSTR,
413         mszMachineNameList: LPWSTR,
414         pcchBufferLength: LPDWORD,
415     ) -> PDH_STATUS;
PdhEnumMachinesA( szDataSource: LPCSTR, mszMachineNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS416     pub fn PdhEnumMachinesA(
417         szDataSource: LPCSTR,
418         mszMachineNameList: LPSTR,
419         pcchBufferLength: LPDWORD,
420     ) -> PDH_STATUS;
PdhEnumObjectsW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, mszObjectList: LPWSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS421     pub fn PdhEnumObjectsW(
422         szDataSource: LPCWSTR,
423         szMachineName: LPCWSTR,
424         mszObjectList: LPWSTR,
425         pcchBufferLength: LPDWORD,
426         dwDetailLevel: DWORD,
427         bRefresh: BOOL,
428     ) -> PDH_STATUS;
PdhEnumObjectsA( szDataSource: LPCSTR, szMachineName: LPCSTR, mszObjectList: LPSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS429     pub fn PdhEnumObjectsA(
430         szDataSource: LPCSTR,
431         szMachineName: LPCSTR,
432         mszObjectList: LPSTR,
433         pcchBufferLength: LPDWORD,
434         dwDetailLevel: DWORD,
435         bRefresh: BOOL,
436     ) -> PDH_STATUS;
PdhEnumObjectItemsW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szObjectName: LPCWSTR, mszCounterList: LPWSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPWSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS437     pub fn PdhEnumObjectItemsW(
438         szDataSource: LPCWSTR,
439         szMachineName: LPCWSTR,
440         szObjectName: LPCWSTR,
441         mszCounterList: LPWSTR,
442         pcchCounterListLength: LPDWORD,
443         mszInstanceList: LPWSTR,
444         pcchInstanceListLength: LPDWORD,
445         dwDetailLevel: DWORD,
446         dwFlags: DWORD,
447     ) -> PDH_STATUS;
PdhEnumObjectItemsA( szDataSource: LPCSTR, szMachineName: LPCSTR, szObjectName: LPCSTR, mszCounterList: LPSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS448     pub fn PdhEnumObjectItemsA(
449         szDataSource: LPCSTR,
450         szMachineName: LPCSTR,
451         szObjectName: LPCSTR,
452         mszCounterList: LPSTR,
453         pcchCounterListLength: LPDWORD,
454         mszInstanceList: LPSTR,
455         pcchInstanceListLength: LPDWORD,
456         dwDetailLevel: DWORD,
457         dwFlags: DWORD,
458     ) -> PDH_STATUS;
PdhMakeCounterPathW( pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W, szFullPathBuffer: LPWSTR, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS459     pub fn PdhMakeCounterPathW(
460         pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W,
461         szFullPathBuffer: LPWSTR,
462         pcchBufferSize: LPDWORD,
463         dwFlags: DWORD,
464     ) -> PDH_STATUS;
PdhMakeCounterPathA( pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A, szFullPathBuffer: LPSTR, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS465     pub fn PdhMakeCounterPathA(
466         pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A,
467         szFullPathBuffer: LPSTR,
468         pcchBufferSize: LPDWORD,
469         dwFlags: DWORD,
470     ) -> PDH_STATUS;
PdhParseCounterPathW( szFullPathBuffer: LPCWSTR, pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_W, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS471     pub fn PdhParseCounterPathW(
472         szFullPathBuffer: LPCWSTR,
473         pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_W,
474         pcchBufferSize: LPDWORD,
475         dwFlags: DWORD,
476     ) -> PDH_STATUS;
PdhParseCounterPathA( szFullPathBuffer: LPCSTR, pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_A, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS477     pub fn PdhParseCounterPathA(
478         szFullPathBuffer: LPCSTR,
479         pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_A,
480         pcchBufferSize: LPDWORD,
481         dwFlags: DWORD,
482     ) -> PDH_STATUS;
PdhParseInstanceNameW( szInstanceString: LPCWSTR, szInstanceName: LPWSTR, pcchInstanceNameLength: LPDWORD, szParentName: LPWSTR, pcchParentNameLength: LPDWORD, lpIndex: LPDWORD, ) -> PDH_STATUS483     pub fn PdhParseInstanceNameW(
484         szInstanceString: LPCWSTR,
485         szInstanceName: LPWSTR,
486         pcchInstanceNameLength: LPDWORD,
487         szParentName: LPWSTR,
488         pcchParentNameLength: LPDWORD,
489         lpIndex: LPDWORD,
490     ) -> PDH_STATUS;
PdhParseInstanceNameA( szInstanceString: LPCSTR, szInstanceName: LPSTR, pcchInstanceNameLength: LPDWORD, szParentName: LPSTR, pcchParentNameLength: LPDWORD, lpIndex: LPDWORD, ) -> PDH_STATUS491     pub fn PdhParseInstanceNameA(
492         szInstanceString: LPCSTR,
493         szInstanceName: LPSTR,
494         pcchInstanceNameLength: LPDWORD,
495         szParentName: LPSTR,
496         pcchParentNameLength: LPDWORD,
497         lpIndex: LPDWORD,
498     ) -> PDH_STATUS;
PdhValidatePathW( szFullCounterPath: LPCWSTR, ) -> PDH_STATUS499     pub fn PdhValidatePathW(
500         szFullCounterPath: LPCWSTR,
501     ) -> PDH_STATUS;
PdhValidatePathA( szFullCounterPath: LPCSTR, ) -> PDH_STATUS502     pub fn PdhValidatePathA(
503         szFullCounterPath: LPCSTR,
504     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szDefaultObjectName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS505     pub fn PdhGetDefaultPerfObjectW(
506         szDataSource: LPCWSTR,
507         szMachineName: LPCWSTR,
508         szDefaultObjectName: LPWSTR,
509         pcchBufferSize: LPDWORD,
510     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectA( szDataSource: LPCSTR, szMachineName: LPCSTR, szDefaultObjectName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS511     pub fn PdhGetDefaultPerfObjectA(
512         szDataSource: LPCSTR,
513         szMachineName: LPCSTR,
514         szDefaultObjectName: LPSTR,
515         pcchBufferSize: LPDWORD,
516     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szObjectName: LPCWSTR, szDefaultCounterName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS517     pub fn PdhGetDefaultPerfCounterW(
518         szDataSource: LPCWSTR,
519         szMachineName: LPCWSTR,
520         szObjectName: LPCWSTR,
521         szDefaultCounterName: LPWSTR,
522         pcchBufferSize: LPDWORD,
523     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterA( szDataSource: LPCSTR, szMachineName: LPCSTR, szObjectName: LPCSTR, szDefaultCounterName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS524     pub fn PdhGetDefaultPerfCounterA(
525         szDataSource: LPCSTR,
526         szMachineName: LPCSTR,
527         szObjectName: LPCSTR,
528         szDefaultCounterName: LPSTR,
529         pcchBufferSize: LPDWORD,
530     ) -> PDH_STATUS;
PdhBrowseCountersW( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_W, ) -> PDH_STATUS531     pub fn PdhBrowseCountersW(
532         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_W,
533     ) -> PDH_STATUS;
PdhBrowseCountersA( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_A, ) -> PDH_STATUS534     pub fn PdhBrowseCountersA(
535         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_A,
536     ) -> PDH_STATUS;
PdhExpandCounterPathW( szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, ) -> PDH_STATUS537     pub fn PdhExpandCounterPathW(
538         szWildCardPath: LPCWSTR,
539         mszExpandedPathList: LPWSTR,
540         pcchPathListLength: LPDWORD,
541     ) -> PDH_STATUS;
PdhExpandCounterPathA( szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, ) -> PDH_STATUS542     pub fn PdhExpandCounterPathA(
543         szWildCardPath: LPCSTR,
544         mszExpandedPathList: LPSTR,
545         pcchPathListLength: LPDWORD,
546     ) -> PDH_STATUS;
PdhLookupPerfNameByIndexW( szMachineName: LPCWSTR, dwNameIndex: DWORD, szNameBuffer: LPWSTR, pcchNameBufferSize: LPDWORD, ) -> PDH_STATUS547     pub fn PdhLookupPerfNameByIndexW(
548         szMachineName: LPCWSTR,
549         dwNameIndex: DWORD,
550         szNameBuffer: LPWSTR,
551         pcchNameBufferSize: LPDWORD,
552     ) -> PDH_STATUS;
PdhLookupPerfNameByIndexA( szMachineName: LPCSTR, dwNameIndex: DWORD, szNameBuffer: LPSTR, pcchNameBufferSize: LPDWORD, ) -> PDH_STATUS553     pub fn PdhLookupPerfNameByIndexA(
554         szMachineName: LPCSTR,
555         dwNameIndex: DWORD,
556         szNameBuffer: LPSTR,
557         pcchNameBufferSize: LPDWORD,
558     ) -> PDH_STATUS;
PdhLookupPerfIndexByNameW( szMachineName: LPCWSTR, szNameBuffer: LPCWSTR, pdwIndex: LPDWORD, ) -> PDH_STATUS559     pub fn PdhLookupPerfIndexByNameW(
560         szMachineName: LPCWSTR,
561         szNameBuffer: LPCWSTR,
562         pdwIndex: LPDWORD,
563     ) -> PDH_STATUS;
PdhLookupPerfIndexByNameA( szMachineName: LPCSTR, szNameBuffer: LPCSTR, pdwIndex: LPDWORD, ) -> PDH_STATUS564     pub fn PdhLookupPerfIndexByNameA(
565         szMachineName: LPCSTR,
566         szNameBuffer: LPCSTR,
567         pdwIndex: LPDWORD,
568     ) -> PDH_STATUS;
PdhExpandWildCardPathW( szDataSource: LPCWSTR, szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS569     pub fn PdhExpandWildCardPathW(
570         szDataSource: LPCWSTR,
571         szWildCardPath: LPCWSTR,
572         mszExpandedPathList: LPWSTR,
573         pcchPathListLength: LPDWORD,
574         dwFlags: DWORD,
575     ) -> PDH_STATUS;
PdhExpandWildCardPathA( szDataSource: LPCSTR, szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS576     pub fn PdhExpandWildCardPathA(
577         szDataSource: LPCSTR,
578         szWildCardPath: LPCSTR,
579         mszExpandedPathList: LPSTR,
580         pcchPathListLength: LPDWORD,
581         dwFlags: DWORD,
582     ) -> PDH_STATUS;
PdhOpenLogW( szLogFileName: LPCWSTR, dwAccessFlags: DWORD, lpdwLogType: LPDWORD, hQuery: PDH_HQUERY, dwMaxSize: DWORD, szUserCaption: LPCWSTR, phLog: *mut PDH_HLOG, ) -> PDH_STATUS583     pub fn PdhOpenLogW(
584         szLogFileName: LPCWSTR,
585         dwAccessFlags: DWORD,
586         lpdwLogType: LPDWORD,
587         hQuery: PDH_HQUERY,
588         dwMaxSize: DWORD,
589         szUserCaption: LPCWSTR,
590         phLog: *mut PDH_HLOG,
591     ) -> PDH_STATUS;
PdhOpenLogA( szLogFileName: LPCSTR, dwAccessFlags: DWORD, lpdwLogType: LPDWORD, hQuery: PDH_HQUERY, dwMaxSize: DWORD, szUserCaption: LPCSTR, phLog: *mut PDH_HLOG, ) -> PDH_STATUS592     pub fn PdhOpenLogA(
593         szLogFileName: LPCSTR,
594         dwAccessFlags: DWORD,
595         lpdwLogType: LPDWORD,
596         hQuery: PDH_HQUERY,
597         dwMaxSize: DWORD,
598         szUserCaption: LPCSTR,
599         phLog: *mut PDH_HLOG,
600     ) -> PDH_STATUS;
PdhUpdateLogW( hLog: PDH_HLOG, szUserString: LPCWSTR, ) -> PDH_STATUS601     pub fn PdhUpdateLogW(
602         hLog: PDH_HLOG,
603         szUserString: LPCWSTR,
604     ) -> PDH_STATUS;
PdhUpdateLogA( hLog: PDH_HLOG, szUserString: LPCSTR, ) -> PDH_STATUS605     pub fn PdhUpdateLogA(
606         hLog: PDH_HLOG,
607         szUserString: LPCSTR,
608     ) -> PDH_STATUS;
PdhUpdateLogFileCatalog( hLog: PDH_HLOG, ) -> PDH_STATUS609     pub fn PdhUpdateLogFileCatalog(
610         hLog: PDH_HLOG,
611     ) -> PDH_STATUS;
PdhGetLogFileSize( hLog: PDH_HLOG, llSize: *mut LONGLONG, ) -> PDH_STATUS612     pub fn PdhGetLogFileSize(
613         hLog: PDH_HLOG,
614         llSize: *mut LONGLONG,
615     ) -> PDH_STATUS;
PdhCloseLog( hLog: PDH_HLOG, dwFlags: DWORD, ) -> PDH_STATUS616     pub fn PdhCloseLog(
617         hLog: PDH_HLOG,
618         dwFlags: DWORD,
619     ) -> PDH_STATUS;
PdhSelectDataSourceW( hWndOwner: HWND, dwFlags: DWORD, szDataSource: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS620     pub fn PdhSelectDataSourceW(
621         hWndOwner: HWND,
622         dwFlags: DWORD,
623         szDataSource: LPWSTR,
624         pcchBufferLength: LPDWORD,
625     ) -> PDH_STATUS;
PdhSelectDataSourceA( hWndOwner: HWND, dwFlags: DWORD, szDataSource: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS626     pub fn PdhSelectDataSourceA(
627         hWndOwner: HWND,
628         dwFlags: DWORD,
629         szDataSource: LPSTR,
630         pcchBufferLength: LPDWORD,
631     ) -> PDH_STATUS;
PdhIsRealTimeQuery( hQuery: PDH_HQUERY, ) -> PDH_STATUS632     pub fn PdhIsRealTimeQuery(
633         hQuery: PDH_HQUERY,
634     ) -> PDH_STATUS;
PdhSetQueryTimeRange( hQuery: PDH_HQUERY, pInfo: PPDH_TIME_INFO, ) -> PDH_STATUS635     pub fn PdhSetQueryTimeRange(
636         hQuery: PDH_HQUERY,
637         pInfo: PPDH_TIME_INFO,
638     ) -> PDH_STATUS;
PdhGetDataSourceTimeRangeW( szDataSource: LPCWSTR, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS639     pub fn PdhGetDataSourceTimeRangeW(
640         szDataSource: LPCWSTR,
641         pdwNumEntries: LPDWORD,
642         pInfo: PPDH_TIME_INFO,
643         pdwBufferSize: LPDWORD,
644     ) -> PDH_STATUS;
PdhGetDataSourceTimeRangeA( szDataSource: LPCSTR, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS645     pub fn PdhGetDataSourceTimeRangeA(
646         szDataSource: LPCSTR,
647         pdwNumEntries: LPDWORD,
648         pInfo: PPDH_TIME_INFO,
649         pdwBufferSize: LPDWORD,
650     ) -> PDH_STATUS;
PdhCollectQueryDataEx( hQuery: PDH_HQUERY, dwIntervalTime: DWORD, hNewDataEvent: HANDLE, ) -> PDH_STATUS651     pub fn PdhCollectQueryDataEx(
652         hQuery: PDH_HQUERY,
653         dwIntervalTime: DWORD,
654         hNewDataEvent: HANDLE,
655     ) -> PDH_STATUS;
PdhFormatFromRawValue( dwCounterType: DWORD, dwFormat: DWORD, pTimeBase: *mut LONGLONG, rawValue1: PPDH_RAW_COUNTER, rawValue2: PPDH_RAW_COUNTER, fmtValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS656     pub fn PdhFormatFromRawValue(
657         dwCounterType: DWORD,
658         dwFormat: DWORD,
659         pTimeBase: *mut LONGLONG,
660         rawValue1: PPDH_RAW_COUNTER,
661         rawValue2: PPDH_RAW_COUNTER,
662         fmtValue: PPDH_FMT_COUNTERVALUE,
663     ) -> PDH_STATUS;
PdhGetCounterTimeBase( hCounter: PDH_HCOUNTER, pTimeBase: *mut LONGLONG, ) -> PDH_STATUS664     pub fn PdhGetCounterTimeBase(
665         hCounter: PDH_HCOUNTER,
666         pTimeBase: *mut LONGLONG,
667     ) -> PDH_STATUS;
PdhReadRawLogRecord( hLog: PDH_HLOG, ftRecord: FILETIME, pRawLogRecord: PPDH_RAW_LOG_RECORD, pdwBufferLength: LPDWORD, ) -> PDH_STATUS668     pub fn PdhReadRawLogRecord(
669         hLog: PDH_HLOG,
670         ftRecord: FILETIME,
671         pRawLogRecord: PPDH_RAW_LOG_RECORD,
672         pdwBufferLength: LPDWORD,
673     ) -> PDH_STATUS;
PdhSetDefaultRealTimeDataSource( dwDataSourceId: DWORD, ) -> PDH_STATUS674     pub fn PdhSetDefaultRealTimeDataSource(
675         dwDataSourceId: DWORD,
676     ) -> PDH_STATUS;
PdhBindInputDataSourceW( phDataSource: *mut PDH_HLOG, szLogFileNameList: LPCWSTR, ) -> PDH_STATUS677     pub fn PdhBindInputDataSourceW(
678         phDataSource: *mut PDH_HLOG,
679         szLogFileNameList: LPCWSTR,
680     ) -> PDH_STATUS;
PdhBindInputDataSourceA( phDataSource: *mut PDH_HLOG, szLogFileNameList: LPCSTR, ) -> PDH_STATUS681     pub fn PdhBindInputDataSourceA(
682         phDataSource: *mut PDH_HLOG,
683         szLogFileNameList: LPCSTR,
684     ) -> PDH_STATUS;
PdhOpenQueryH( hDataSource: PDH_HLOG, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS685     pub fn PdhOpenQueryH(
686         hDataSource: PDH_HLOG,
687         dwUserData: DWORD_PTR,
688         phQuery: *mut PDH_HQUERY,
689     ) -> PDH_STATUS;
PdhEnumMachinesHW( hDataSource: PDH_HLOG, mszMachineNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS690     pub fn PdhEnumMachinesHW(
691         hDataSource: PDH_HLOG,
692         mszMachineNameList: LPWSTR,
693         pcchBufferLength: LPDWORD,
694     ) -> PDH_STATUS;
PdhEnumMachinesHA( hDataSource: PDH_HLOG, mszMachineNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS695     pub fn PdhEnumMachinesHA(
696         hDataSource: PDH_HLOG,
697         mszMachineNameList: LPSTR,
698         pcchBufferLength: LPDWORD,
699     ) -> PDH_STATUS;
PdhEnumObjectsHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, mszObjectList: LPWSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS700     pub fn PdhEnumObjectsHW(
701         hDataSource: PDH_HLOG,
702         szMachineName: LPCWSTR,
703         mszObjectList: LPWSTR,
704         pcchBufferLength: LPDWORD,
705         dwDetailLevel: DWORD,
706         bRefresh: BOOL,
707     ) -> PDH_STATUS;
PdhEnumObjectsHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, mszObjectList: LPSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS708     pub fn PdhEnumObjectsHA(
709         hDataSource: PDH_HLOG,
710         szMachineName: LPCSTR,
711         mszObjectList: LPSTR,
712         pcchBufferLength: LPDWORD,
713         dwDetailLevel: DWORD,
714         bRefresh: BOOL,
715     ) -> PDH_STATUS;
PdhEnumObjectItemsHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szObjectName: LPCWSTR, mszCounterList: LPWSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPWSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS716     pub fn PdhEnumObjectItemsHW(
717         hDataSource: PDH_HLOG,
718         szMachineName: LPCWSTR,
719         szObjectName: LPCWSTR,
720         mszCounterList: LPWSTR,
721         pcchCounterListLength: LPDWORD,
722         mszInstanceList: LPWSTR,
723         pcchInstanceListLength: LPDWORD,
724         dwDetailLevel: DWORD,
725         dwFlags: DWORD,
726     ) -> PDH_STATUS;
PdhEnumObjectItemsHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szObjectName: LPCSTR, mszCounterList: LPSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS727     pub fn PdhEnumObjectItemsHA(
728         hDataSource: PDH_HLOG,
729         szMachineName: LPCSTR,
730         szObjectName: LPCSTR,
731         mszCounterList: LPSTR,
732         pcchCounterListLength: LPDWORD,
733         mszInstanceList: LPSTR,
734         pcchInstanceListLength: LPDWORD,
735         dwDetailLevel: DWORD,
736         dwFlags: DWORD,
737     ) -> PDH_STATUS;
PdhExpandWildCardPathHW( hDataSource: PDH_HLOG, szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS738     pub fn PdhExpandWildCardPathHW(
739         hDataSource: PDH_HLOG,
740         szWildCardPath: LPCWSTR,
741         mszExpandedPathList: LPWSTR,
742         pcchPathListLength: LPDWORD,
743         dwFlags: DWORD,
744     ) -> PDH_STATUS;
PdhExpandWildCardPathHA( hDataSource: PDH_HLOG, szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS745     pub fn PdhExpandWildCardPathHA(
746         hDataSource: PDH_HLOG,
747         szWildCardPath: LPCSTR,
748         mszExpandedPathList: LPSTR,
749         pcchPathListLength: LPDWORD,
750         dwFlags: DWORD,
751     ) -> PDH_STATUS;
PdhGetDataSourceTimeRangeH( hDataSource: PDH_HLOG, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS752     pub fn PdhGetDataSourceTimeRangeH(
753         hDataSource: PDH_HLOG,
754         pdwNumEntries: LPDWORD,
755         pInfo: PPDH_TIME_INFO,
756         pdwBufferSize: LPDWORD,
757     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szDefaultObjectName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS758     pub fn PdhGetDefaultPerfObjectHW(
759         hDataSource: PDH_HLOG,
760         szMachineName: LPCWSTR,
761         szDefaultObjectName: LPWSTR,
762         pcchBufferSize: LPDWORD,
763     ) -> PDH_STATUS;
PdhGetDefaultPerfObjectHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szDefaultObjectName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS764     pub fn PdhGetDefaultPerfObjectHA(
765         hDataSource: PDH_HLOG,
766         szMachineName: LPCSTR,
767         szDefaultObjectName: LPSTR,
768         pcchBufferSize: LPDWORD,
769     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szObjectName: LPCWSTR, szDefaultCounterName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS770     pub fn PdhGetDefaultPerfCounterHW(
771         hDataSource: PDH_HLOG,
772         szMachineName: LPCWSTR,
773         szObjectName: LPCWSTR,
774         szDefaultCounterName: LPWSTR,
775         pcchBufferSize: LPDWORD,
776     ) -> PDH_STATUS;
PdhGetDefaultPerfCounterHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szObjectName: LPCSTR, szDefaultCounterName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS777     pub fn PdhGetDefaultPerfCounterHA(
778         hDataSource: PDH_HLOG,
779         szMachineName: LPCSTR,
780         szObjectName: LPCSTR,
781         szDefaultCounterName: LPSTR,
782         pcchBufferSize: LPDWORD,
783     ) -> PDH_STATUS;
PdhBrowseCountersHW( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HW, ) -> PDH_STATUS784     pub fn PdhBrowseCountersHW(
785         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HW,
786     ) -> PDH_STATUS;
PdhBrowseCountersHA( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HA, ) -> PDH_STATUS787     pub fn PdhBrowseCountersHA(
788         pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HA,
789     ) -> PDH_STATUS;
PdhEnumLogSetNamesW( szDataSource: LPCWSTR, mszLogSetNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS790     pub fn PdhEnumLogSetNamesW(
791         szDataSource: LPCWSTR,
792         mszLogSetNameList: LPWSTR,
793         pcchBufferLength: LPDWORD,
794     ) -> PDH_STATUS;
PdhEnumLogSetNamesA( szDataSource: LPCSTR, mszLogSetNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS795     pub fn PdhEnumLogSetNamesA(
796         szDataSource: LPCSTR,
797         mszLogSetNameList: LPSTR,
798         pcchBufferLength: LPDWORD,
799     ) -> PDH_STATUS;
800 }
801 // pub fn PdhVerifySQLDBW() -> PDH_STATUS;
802 // pub fn PdhVerifySQLDBA() -> PDH_STATUS;
803 // pub fn PdhCreateSQLTablesW() -> PDH_STATUS;
804 // pub fn PdhCreateSQLTablesA() -> PDH_STATUS;
805 //pub fn PdhGetLogSetGUID() -> PDH_STATUS;
806 // pub fn PdhSetLogSetRunID() -> PDH_STATUS;
807