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