1 {******************************************************************************}
2 {                                                                              }
3 { Performance Data Helper API interface Unit for Object Pascal                 }
4 {                                                                              }
5 { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
6 { Corporation. All Rights Reserved.                                            }
7 {                                                                              }
8 { The original file is: pdh.h, released June 2000. The original Pascal         }
9 { code is: Pdh.pas, released December 2000. The initial developer of the       }
10 { Pascal code is Marcel van Brakel (brakelm att chello dott nl).               }
11 {                                                                              }
12 { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
13 { Marcel van Brakel. All Rights Reserved.                                      }
14 {                                                                              }
15 { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
16 {                                                                              }
17 { You may retrieve the latest version of this file at the Project JEDI         }
18 { APILIB home page, located at http://jedi-apilib.sourceforge.net              }
19 {                                                                              }
20 { The contents of this file are used with permission, subject to the Mozilla   }
21 { Public License Version 1.1 (the "License"); you may not use this file except }
22 { in compliance with the License. You may obtain a copy of the License at      }
23 { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
24 {                                                                              }
25 { Software distributed under the License is distributed on an "AS IS" basis,   }
26 { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
27 { the specific language governing rights and limitations under the License.    }
28 {                                                                              }
29 { Alternatively, the contents of this file may be used under the terms of the  }
30 { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
31 { provisions of the LGPL License are applicable instead of those above.        }
32 { If you wish to allow use of your version of this file only under the terms   }
33 { of the LGPL License and not to allow others to use your version of this file }
34 { under the MPL, indicate your decision by deleting  the provisions above and  }
35 { replace  them with the notice and other provisions required by the LGPL      }
36 { License.  If you do not delete the provisions above, a recipient may use     }
37 { your version of this file under either the MPL or the LGPL License.          }
38 {                                                                              }
39 { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
40 {                                                                              }
41 {******************************************************************************}
42 
43 // $Id: JwaPdh.pas,v 1.15 2007/09/14 06:48:46 marquardt Exp $
44 {$IFNDEF JWA_OMIT_SECTIONS}
45 unit JwaPdh;
46 
47 {$WEAKPACKAGEUNIT}
48 {$ENDIF JWA_OMIT_SECTIONS}
49 
50 {$HPPEMIT ''}
51 {$HPPEMIT '#include "pdh.h"'}
52 {$HPPEMIT ''}
53 
54 {$IFNDEF JWA_OMIT_SECTIONS}
55 {$I jediapilib.inc}
56 
57 interface
58 
59 uses
60   JwaWinBase, JwaWinType, JwaWinPerf;
61 {$ENDIF JWA_OMIT_SECTIONS}
62 
63 {$IFNDEF JWA_IMPLEMENTATIONSECTION}
64 type
65   PDH_STATUS = DWORD;
66   {$EXTERNALSYM PDH_STATUS}
67 
68 const
69 
70 // version info
71 
72   PDH_CVERSION_WIN40 = DWORD($0400);
73   {$EXTERNALSYM PDH_CVERSION_WIN40}
74   PDH_CVERSION_WIN50 = DWORD($0500);
75   {$EXTERNALSYM PDH_CVERSION_WIN50}
76 
77 // v1.1 revision of PDH -- basic log functions
78 // v1.2 of the PDH -- adds variable instance counters
79 // v1.3 of the PDH -- adds log service control & stubs for NT5/PDH v2 fn's
80 // v2.0 of the PDH -- is the NT v 5.0 B2 version
81 
82   PDH_VERSION        = DWORD((PDH_CVERSION_WIN50) + $0003);
83   {$EXTERNALSYM PDH_VERSION}
84 
85 // define severity masks
86 
87 function IsSuccessSeverity(ErrorCode: Longint): Boolean;
88 {$EXTERNALSYM IsSuccessSeverity}
89 function IsInformationalSeverity(ErrorCode: Longint): Boolean;
90 {$EXTERNALSYM IsInformationalSeverity}
91 function IsWarningSeverity(ErrorCode: Longint): Boolean;
92 {$EXTERNALSYM IsWarningSeverity}
93 function IsErrorSeverity(ErrorCode: Longint): Boolean;
94 {$EXTERNALSYM IsErrorSeverity}
95 
96 const
97   MAX_COUNTER_PATH = 256;         // Maximum counter path length
98   {$EXTERNALSYM MAX_COUNTER_PATH}
99 
100   PDH_MAX_COUNTER_NAME    = 1024;  // Maximum counter name length.
101   {$EXTERNALSYM PDH_MAX_COUNTER_NAME}
102   PDH_MAX_INSTANCE_NAME   = 1024;  // Maximum counter instance name length.
103   {$EXTERNALSYM PDH_MAX_INSTANCE_NAME}
104   PDH_MAX_COUNTER_PATH    = 2048;  // Maximum full counter path length.
105   {$EXTERNALSYM PDH_MAX_COUNTER_PATH}
106   PDH_MAX_DATASOURCE_PATH = 1024;  // MAximum full counter log name length.
107   {$EXTERNALSYM PDH_MAX_DATASOURCE_PATH}
108 
109 // data type definitions
110 
111 type
112   PDH_HCOUNTER = HANDLE;
113   {$EXTERNALSYM PDH_HCOUNTER}
114   PDH_HQUERY = HANDLE;
115   {$EXTERNALSYM PDH_HQUERY}
116   PDH_HLOG = HANDLE;
117   {$EXTERNALSYM PDH_HLOG}
118 
119   HCOUNTER = PDH_HCOUNTER;
120   {$EXTERNALSYM HCOUNTER}
121   HQUERY = PDH_HQUERY;
122   {$EXTERNALSYM HQUERY}
123   {$IFNDEF JWA_INCLUDEMODE}
124   HLOG = PDH_HLOG;
125   {$EXTERNALSYM HLOG}
126   {$ENDIF JWA_INCLUDEMODE}
127 
128 const
129   {$IFNDEF JWA_INCLUDEMODE}
130   INVALID_HANDLE_VALUE = HANDLE(LONG_PTR(-1));
131   {$EXTERNALSYM INVALID_HANDLE_VALUE}
132   {$ENDIF JWA_INCLUDEMODE}
133 
134   H_REALTIME_DATASOURCE = NULL;
135   {$EXTERNALSYM H_REALTIME_DATASOURCE}
136   H_WBEM_DATASOURCE     = INVALID_HANDLE_VALUE;
137   {$EXTERNALSYM H_WBEM_DATASOURCE}
138 
139 type
140   PPDH_RAW_COUNTER = ^PDH_RAW_COUNTER;
141   {$EXTERNALSYM PPDH_RAW_COUNTER}
142   _PDH_RAW_COUNTER = record
143     CStatus: DWORD;
144     TimeStamp: FILETIME;
145     FirstValue: LONGLONG;
146     SecondValue: LONGLONG;
147     MultiCount: DWORD;
148   end;
149   {$EXTERNALSYM _PDH_RAW_COUNTER}
150   PDH_RAW_COUNTER = _PDH_RAW_COUNTER;
151   {$EXTERNALSYM PDH_RAW_COUNTER}
152   TPdhRawCounter = PDH_RAW_COUNTER;
153   PPdhRawCounter = PPDH_RAW_COUNTER;
154 
155   PPDH_RAW_COUNTER_ITEM_A = ^PDH_RAW_COUNTER_ITEM_A;
156   {$EXTERNALSYM PPDH_RAW_COUNTER_ITEM_A}
157   _PDH_RAW_COUNTER_ITEM_A = record
158     szName: LPSTR;
159     RawValue: PDH_RAW_COUNTER;
160   end;
161   {$EXTERNALSYM _PDH_RAW_COUNTER_ITEM_A}
162   PDH_RAW_COUNTER_ITEM_A = _PDH_RAW_COUNTER_ITEM_A;
163   {$EXTERNALSYM PDH_RAW_COUNTER_ITEM_A}
164   TPdhRawCounterItemA = PDH_RAW_COUNTER_ITEM_A;
165   PPdhRawCounterItemA = PPDH_RAW_COUNTER_ITEM_A;
166 
167   PPDH_RAW_COUNTER_ITEM_W = ^PDH_RAW_COUNTER_ITEM_W;
168   {$EXTERNALSYM PPDH_RAW_COUNTER_ITEM_W}
169   _PDH_RAW_COUNTER_ITEM_W = record
170     szName: LPWSTR;
171     RawValue: PDH_RAW_COUNTER;
172   end;
173   {$EXTERNALSYM _PDH_RAW_COUNTER_ITEM_W}
174   PDH_RAW_COUNTER_ITEM_W = _PDH_RAW_COUNTER_ITEM_W;
175   {$EXTERNALSYM PDH_RAW_COUNTER_ITEM_W}
176   TPdhRawCounterItemW = PDH_RAW_COUNTER_ITEM_W;
177   PPdhRawCounterItemW = PPDH_RAW_COUNTER_ITEM_W;
178 
179   {$IFDEF UNICODE}
180   PPdhRawCounterItem = PPdhRawCounterItemW;
181   PDH_RAW_COUNTER_ITEM = _PDH_RAW_COUNTER_ITEM_W;
182   {$EXTERNALSYM PDH_RAW_COUNTER_ITEM}
183   PPDH_RAW_COUNTER_ITEM = PPDH_RAW_COUNTER_ITEM_W;
184   {$EXTERNALSYM PPDH_RAW_COUNTER_ITEM}
185   TPdhRawCounterItem = _PDH_RAW_COUNTER_ITEM_W;
186   {$ELSE}
187   PPdhRawCounterItem = PPdhRawCounterItemA;
188   PDH_RAW_COUNTER_ITEM = _PDH_RAW_COUNTER_ITEM_A;
189   {$EXTERNALSYM PDH_RAW_COUNTER_ITEM}
190   PPDH_RAW_COUNTER_ITEM = PPDH_RAW_COUNTER_ITEM_A;
191   {$EXTERNALSYM PPDH_RAW_COUNTER_ITEM}
192   TPdhRawCounterItem = _PDH_RAW_COUNTER_ITEM_A;
193   {$ENDIF UNICODE}
194 
195   PPDH_FMT_COUNTERVALUE = ^PDH_FMT_COUNTERVALUE;
196   {$EXTERNALSYM PPDH_FMT_COUNTERVALUE}
197   _PDH_FMT_COUNTERVALUE = record
198     CStatus: DWORD;
199     case Longint of
200       1: (longValue: LONG);
201       2: (doubleValue: Double);
202       3: (largeValue: LONGLONG);
203       4: (AnsiStringValue: LPSTR);
204       5: (WideStringValue: LPCWSTR);
205   end;
206   {$EXTERNALSYM _PDH_FMT_COUNTERVALUE}
207   PDH_FMT_COUNTERVALUE = _PDH_FMT_COUNTERVALUE;
208   {$EXTERNALSYM PDH_FMT_COUNTERVALUE}
209   TPdhFmtCounterValue = PDH_FMT_COUNTERVALUE;
210   PPdhFmtCounterValue = PPDH_FMT_COUNTERVALUE;
211 
212   PPDH_FMT_COUNTERVALUE_ITEM_A = ^PDH_FMT_COUNTERVALUE_ITEM_A;
213   {$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM_A}
214   _PDH_FMT_COUNTERVALUE_ITEM_A = record
215     szName: LPSTR;
216     FmtValue: PDH_FMT_COUNTERVALUE;
217   end;
218   {$EXTERNALSYM _PDH_FMT_COUNTERVALUE_ITEM_A}
219   PDH_FMT_COUNTERVALUE_ITEM_A = _PDH_FMT_COUNTERVALUE_ITEM_A;
220   {$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM_A}
221   TPdhFmtCounterValueItemA = PDH_FMT_COUNTERVALUE_ITEM_A;
222   PPdhFmtCounterValueItemA = PPDH_FMT_COUNTERVALUE_ITEM_A;
223 
224   PPDH_FMT_COUNTERVALUE_ITEM_W = ^PDH_FMT_COUNTERVALUE_ITEM_W;
225   {$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM_W}
226   _PDH_FMT_COUNTERVALUE_ITEM_W = record
227     szName: LPWSTR;
228     FmtValue: PDH_FMT_COUNTERVALUE;
229   end;
230   {$EXTERNALSYM _PDH_FMT_COUNTERVALUE_ITEM_W}
231   PDH_FMT_COUNTERVALUE_ITEM_W = _PDH_FMT_COUNTERVALUE_ITEM_W;
232   {$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM_W}
233   TPdhFmtCounterValueItemW = PDH_FMT_COUNTERVALUE_ITEM_W;
234   PPdhFmtCounterValueItemW = PPDH_FMT_COUNTERVALUE_ITEM_W;
235 
236   {$IFDEF UNICODE}
237   PPdhFmtCounterValueItem = PPdhFmtCounterValueItemW;
238   PDH_FMT_COUNTERVALUE_ITEM = _PDH_FMT_COUNTERVALUE_ITEM_W;
239   {$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM}
240   PPDH_FMT_COUNTERVALUE_ITEM = PPDH_FMT_COUNTERVALUE_ITEM_W;
241   {$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM}
242   TPdhFmtCounterValueItem = _PDH_FMT_COUNTERVALUE_ITEM_W;
243   {$ELSE}
244   PPdhFmtCounterValueItem = PPdhFmtCounterValueItemA;
245   PDH_FMT_COUNTERVALUE_ITEM = _PDH_FMT_COUNTERVALUE_ITEM_A;
246   {$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM}
247   PPDH_FMT_COUNTERVALUE_ITEM = PPDH_FMT_COUNTERVALUE_ITEM_A;
248   {$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM}
249   TPdhFmtCounterValueItem = _PDH_FMT_COUNTERVALUE_ITEM_A;
250   {$ENDIF UNICODE}
251 
252   PPDH_STATISTICS = ^PDH_STATISTICS;
253   {$EXTERNALSYM PPDH_STATISTICS}
254   _PDH_STATISTICS = record
255     dwFormat: DWORD;
256     Count: DWORD;
257     min: PDH_FMT_COUNTERVALUE;
258     max: PDH_FMT_COUNTERVALUE;
259     mean: PDH_FMT_COUNTERVALUE;
260   end;
261   {$EXTERNALSYM _PDH_STATISTICS}
262   PDH_STATISTICS = _PDH_STATISTICS;
263   {$EXTERNALSYM PDH_STATISTICS}
264   TPdhStatistics = PDH_STATISTICS;
265   PPdhStatistics = PPDH_STATISTICS;
266 
267   PPDH_COUNTER_PATH_ELEMENTS_A = ^PDH_COUNTER_PATH_ELEMENTS_A;
268   {$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS_A}
269   _PDH_COUNTER_PATH_ELEMENTS_A = record
270     szMachineName: LPSTR;
271     szObjectName: LPSTR;
272     szInstanceName: LPSTR;
273     szParentInstance: LPSTR;
274     dwInstanceIndex: DWORD;
275     szCounterName: LPSTR;
276   end;
277   {$EXTERNALSYM _PDH_COUNTER_PATH_ELEMENTS_A}
278   PDH_COUNTER_PATH_ELEMENTS_A = _PDH_COUNTER_PATH_ELEMENTS_A;
279   {$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS_A}
280   TPdhCounterPathElementsA = PDH_COUNTER_PATH_ELEMENTS_A;
281   PPdhCounterPathElementsA = PPDH_COUNTER_PATH_ELEMENTS_A;
282 
283   PPDH_COUNTER_PATH_ELEMENTS_W = ^PDH_COUNTER_PATH_ELEMENTS_W;
284   {$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS_W}
285   _PDH_COUNTER_PATH_ELEMENTS_W = record
286     szMachineName: LPWSTR;
287     szObjectName: LPWSTR;
288     szInstanceName: LPWSTR;
289     szParentInstance: LPWSTR;
290     dwInstanceIndex: DWORD;
291     szCounterName: LPWSTR;
292   end;
293   {$EXTERNALSYM _PDH_COUNTER_PATH_ELEMENTS_W}
294   PDH_COUNTER_PATH_ELEMENTS_W = _PDH_COUNTER_PATH_ELEMENTS_W;
295   {$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS_W}
296   TPdhCounterPathElementsW = PDH_COUNTER_PATH_ELEMENTS_W;
297   PPdhCounterPathElementsW = PPDH_COUNTER_PATH_ELEMENTS_W;
298 
299   {$IFDEF UNICODE}
300   PPdhCounterPathElements = PPdhCounterPathElementsW;
301   PDH_COUNTER_PATH_ELEMENTS = _PDH_COUNTER_PATH_ELEMENTS_W;
302   {$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS}
303   PPDH_COUNTER_PATH_ELEMENTS = PPDH_COUNTER_PATH_ELEMENTS_W;
304   {$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS}
305   TPdhCounterPathElements = _PDH_COUNTER_PATH_ELEMENTS_W;
306   {$ELSE}
307   PPdhCounterPathElements = PPdhCounterPathElementsA;
308   PDH_COUNTER_PATH_ELEMENTS = _PDH_COUNTER_PATH_ELEMENTS_A;
309   {$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS}
310   PPDH_COUNTER_PATH_ELEMENTS = PPDH_COUNTER_PATH_ELEMENTS_A;
311   {$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS}
312   TPdhCounterPathElements = _PDH_COUNTER_PATH_ELEMENTS_A;
313   {$ENDIF UNICODE}
314 
315   PPDH_DATA_ITEM_PATH_ELEMENTS_A = ^PDH_DATA_ITEM_PATH_ELEMENTS_A;
316   {$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS_A}
317   _PDH_DATA_ITEM_PATH_ELEMENTS_A = record
318     szMachineName: LPSTR;
319     ObjectGUID: GUID;
320     dwItemId: DWORD;
321     szInstanceName: LPSTR;
322   end;
323   {$EXTERNALSYM _PDH_DATA_ITEM_PATH_ELEMENTS_A}
324   PDH_DATA_ITEM_PATH_ELEMENTS_A = _PDH_DATA_ITEM_PATH_ELEMENTS_A;
325   {$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS_A}
326   TPdhDataItemPathElementsA = PDH_DATA_ITEM_PATH_ELEMENTS_A;
327   PPdhDataItemPathElementsA = PPDH_DATA_ITEM_PATH_ELEMENTS_A;
328 
329   PPDH_DATA_ITEM_PATH_ELEMENTS_W = ^PDH_DATA_ITEM_PATH_ELEMENTS_W;
330   {$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS_W}
331   _PDH_DATA_ITEM_PATH_ELEMENTS_W = record
332     szMachineName: LPWSTR;
333     ObjectGUID: GUID;
334     dwItemId: DWORD;
335     szInstanceName: LPWSTR;
336   end;
337   {$EXTERNALSYM _PDH_DATA_ITEM_PATH_ELEMENTS_W}
338   PDH_DATA_ITEM_PATH_ELEMENTS_W = _PDH_DATA_ITEM_PATH_ELEMENTS_W;
339   {$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS_W}
340   TPdhDataItemPathElementsW = PDH_DATA_ITEM_PATH_ELEMENTS_W;
341   PPdhDataItemPathElementsW = PPDH_DATA_ITEM_PATH_ELEMENTS_W;
342 
343   {$IFDEF UNICODE}
344   PPdhDataItemPathElements = PPdhDataItemPathElementsW;
345   PDH_DATA_ITEM_PATH_ELEMENTS = _PDH_DATA_ITEM_PATH_ELEMENTS_W;
346   {$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS}
347   PPDH_DATA_ITEM_PATH_ELEMENTS = PPDH_DATA_ITEM_PATH_ELEMENTS_W;
348   {$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS}
349   TPdhDataItemPathElements = _PDH_DATA_ITEM_PATH_ELEMENTS_W;
350   {$ELSE}
351   PPdhDataItemPathElements = PPdhDataItemPathElementsA;
352   PDH_DATA_ITEM_PATH_ELEMENTS = _PDH_DATA_ITEM_PATH_ELEMENTS_A;
353   {$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS}
354   PPDH_DATA_ITEM_PATH_ELEMENTS = PPDH_DATA_ITEM_PATH_ELEMENTS_A;
355   {$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS}
356   TPdhDataItemPathElements = _PDH_DATA_ITEM_PATH_ELEMENTS_A;
357   {$ENDIF UNICODE}
358 
359   PPDH_COUNTER_INFO_A = ^PDH_COUNTER_INFO_A;
360   {$EXTERNALSYM PPDH_COUNTER_INFO_A}
361   _PDH_COUNTER_INFO_A = record
362     dwLength: DWORD;
363     dwType: DWORD;
364     CVersion: DWORD;
365     CStatus: DWORD;
366     lScale: LONG;
367     lDefaultScale: LONG;
368     dwUserData: DWORD_PTR;
369     dwQueryUserData: DWORD_PTR;
370     szFullPath: LPSTR;
371     Union: record
372       case Longint of
373         1: (DataItemPath: PDH_DATA_ITEM_PATH_ELEMENTS_A);
374         2: (CounterPath: PDH_COUNTER_PATH_ELEMENTS_A);
375         3: (szMachineName: LPSTR;
376             szObjectName: LPSTR;
377             szInstanceName: LPSTR;
378             szParentInstance: LPSTR;
379             dwInstanceIndex: DWORD;
380             szCounterName: LPSTR);
381     end;
382     szExplainText: LPSTR;
383     DataBuffer: array [0..0] of DWORD;
384   end;
385   {$EXTERNALSYM _PDH_COUNTER_INFO_A}
386   PDH_COUNTER_INFO_A = _PDH_COUNTER_INFO_A;
387   {$EXTERNALSYM PDH_COUNTER_INFO_A}
388   TPdhCounterInfoA = PDH_COUNTER_INFO_A;
389   PPdhCounterInfoA = PPDH_COUNTER_INFO_A;
390 
391   PPDH_COUNTER_INFO_W = ^PDH_COUNTER_INFO_W;
392   {$EXTERNALSYM PPDH_COUNTER_INFO_W}
393   _PDH_COUNTER_INFO_W = record
394     dwLength: DWORD;
395     dwType: DWORD;
396     CVersion: DWORD;
397     CStatus: DWORD;
398     lScale: LONG;
399     lDefaultScale: LONG;
400     dwUserData: DWORD_PTR;
401     dwQueryUserData: DWORD_PTR;
402     szFullPath: LPWSTR;
403     Union: record
404       case Longint of
405         1: (DataItemPath: PDH_DATA_ITEM_PATH_ELEMENTS_W);
406         2: (CounterPath: PDH_COUNTER_PATH_ELEMENTS_W);
407         3: (szMachineName: LPWSTR;
408             szObjectName: LPWSTR;
409             szInstanceName: LPWSTR;
410             szParentInstance: LPWSTR;
411             dwInstanceIndex: DWORD;
412             szCounterName: LPWSTR);
413     end;
414     szExplainText: LPWSTR;
415     DataBuffer: array [0..0] of DWORD;
416   end;
417   {$EXTERNALSYM _PDH_COUNTER_INFO_W}
418   PDH_COUNTER_INFO_W = _PDH_COUNTER_INFO_W;
419   {$EXTERNALSYM PDH_COUNTER_INFO_W}
420   TPdhCounterInfoW = PDH_COUNTER_INFO_W;
421   PPdhCounterInfoW = PPDH_COUNTER_INFO_W;
422 
423   {$IFDEF UNICODE}
424   PPdhCounterInfo = PPdhCounterInfoW;
425   PDH_COUNTER_INFO = _PDH_COUNTER_INFO_W;
426   {$EXTERNALSYM PDH_COUNTER_INFO}
427   PPDH_COUNTER_INFO = PPDH_COUNTER_INFO_W;
428   {$EXTERNALSYM PPDH_COUNTER_INFO}
429   TPdhCounterInfo = _PDH_COUNTER_INFO_W;
430   {$ELSE}
431   PPdhCounterInfo = PPdhCounterInfoA;
432   PDH_COUNTER_INFO = _PDH_COUNTER_INFO_A;
433   {$EXTERNALSYM PDH_COUNTER_INFO}
434   PPDH_COUNTER_INFO = PPDH_COUNTER_INFO_A;
435   {$EXTERNALSYM PPDH_COUNTER_INFO}
436   TPdhCounterInfo = _PDH_COUNTER_INFO_A;
437   {$ENDIF UNICODE}
438 
439   PPDH_TIME_INFO = ^PDH_TIME_INFO;
440   {$EXTERNALSYM PPDH_TIME_INFO}
441   _PDH_TIME_INFO = record
442     StartTime: LONGLONG;
443     EndTime: LONGLONG;
444     SampleCount: DWORD;
445   end;
446   {$EXTERNALSYM _PDH_TIME_INFO}
447   PDH_TIME_INFO = _PDH_TIME_INFO;
448   {$EXTERNALSYM PDH_TIME_INFO}
449   TPdhTimeInfo = PDH_TIME_INFO;
450   PPdhTimeInfo = PPDH_TIME_INFO;
451 
452   PPDH_RAW_LOG_RECORD = ^PDH_RAW_LOG_RECORD;
453   {$EXTERNALSYM PPDH_RAW_LOG_RECORD}
454   _PDH_RAW_LOG_RECORD = record
455     dwStructureSize: DWORD;
456     dwRecordType: DWORD;
457     dwItems: DWORD;
458     RawBytes: array [0..0] of UCHAR;
459   end;
460   {$EXTERNALSYM _PDH_RAW_LOG_RECORD}
461   PDH_RAW_LOG_RECORD = _PDH_RAW_LOG_RECORD;
462   {$EXTERNALSYM PDH_RAW_LOG_RECORD}
463   TPdhRawLogRecord = PDH_RAW_LOG_RECORD;
464   PPdhRawLogRecord = PPDH_RAW_LOG_RECORD;
465 
466   PPDH_LOG_SERVICE_QUERY_INFO_A = ^PDH_LOG_SERVICE_QUERY_INFO_A;
467   {$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO_A}
468   _PDH_LOG_SERVICE_QUERY_INFO_A = record
469     dwSize: DWORD;
470     dwFlags: DWORD;
471     dwLogQuota: DWORD;
472     szLogFileCaption: LPSTR;
473     szDefaultDir: LPSTR;
474     szBaseFileName: LPSTR;
475     dwFileType: DWORD;
476     dwReserved: DWORD;
477     Union: record
478       case Longint of
479       1: (PdlAutoNameInterval: DWORD;
480           PdlAutoNameUnits: DWORD;
481           PdlCommandFilename: LPSTR;
482           PdlCounterList: LPSTR;
483           PdlAutoNameFormat: DWORD;
484           PdlSampleInterval: DWORD;
485           PdlLogStartTime: FILETIME;
486           PdlLogEndTime: FILETIME);
487       2: (TlNumberOfBuffers: DWORD;
488           TlMinimumBuffers: DWORD;
489           TlMaximumBuffers: DWORD;
490           TlFreeBuffers: DWORD;
491           TlBufferSize: DWORD;
492           TlEventsLost: DWORD;
493           TlLoggerThreadId: DWORD;
494           TlBuffersWritten: DWORD;
495           TlLogHandle: DWORD;
496           TlLogFileName: LPSTR);
497     end;
498   end;
499   {$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_A}
500   PDH_LOG_SERVICE_QUERY_INFO_A = _PDH_LOG_SERVICE_QUERY_INFO_A;
501   {$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_A}
502   TPdhLogServiceQueryInfoA = PDH_LOG_SERVICE_QUERY_INFO_A;
503   PPdhLogServiceQueryInfoA = PPDH_LOG_SERVICE_QUERY_INFO_A;
504 
505   PPDH_LOG_SERVICE_QUERY_INFO_W = ^PDH_LOG_SERVICE_QUERY_INFO_W;
506   {$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO_W}
507   _PDH_LOG_SERVICE_QUERY_INFO_W = record
508     dwSize: DWORD;
509     dwFlags: DWORD;
510     dwLogQuota: DWORD;
511     szLogFileCaption: LPWSTR;
512     szDefaultDir: LPWSTR;
513     szBaseFileName: LPWSTR;
514     dwFileType: DWORD;
515     dwReserved: DWORD;
516     Union: record
517       case Longint of
518       1: (PdlAutoNameInterval: DWORD;
519           PdlAutoNameUnits: DWORD;
520           PdlCommandFilename: LPWSTR;
521           PdlCounterList: LPWSTR;
522           PdlAutoNameFormat: DWORD;
523           PdlSampleInterval: DWORD;
524           PdlLogStartTime: FILETIME;
525           PdlLogEndTime: FILETIME);
526       2: (TlNumberOfBuffers: DWORD;
527           TlMinimumBuffers: DWORD;
528           TlMaximumBuffers: DWORD;
529           TlFreeBuffers: DWORD;
530           TlBufferSize: DWORD;
531           TlEventsLost: DWORD;
532           TlLoggerThreadId: DWORD;
533           TlBuffersWritten: DWORD;
534           TlLogHandle: DWORD;
535           TlLogFileName: LPWSTR);
536     end;
537   end;
538   {$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_W}
539   PDH_LOG_SERVICE_QUERY_INFO_W = _PDH_LOG_SERVICE_QUERY_INFO_W;
540   {$EXTERNALSYM PDH_LOG_SERVICE_QUERY_INFO_W}
541   TPdhLogServiceQueryInfoW = PDH_LOG_SERVICE_QUERY_INFO_W;
542   PPdhLogServiceQueryInfoW = PPDH_LOG_SERVICE_QUERY_INFO_W;
543 
544   {$IFDEF UNICODE}
545   PPdhLogServiceQueryInfo = PPdhLogServiceQueryInfoW;
546   PDH_LOG_SERVICE_QUERY_INFO = _PDH_LOG_SERVICE_QUERY_INFO_W;
547   {$EXTERNALSYM PDH_LOG_SERVICE_QUERY_INFO}
548   PPDH_LOG_SERVICE_QUERY_INFO = PPDH_LOG_SERVICE_QUERY_INFO_W;
549   {$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO}
550   TPdhLogServiceQueryInfo = _PDH_LOG_SERVICE_QUERY_INFO_W;
551   {$ELSE}
552   PPdhLogServiceQueryInfo = PPdhLogServiceQueryInfoA;
553   PDH_LOG_SERVICE_QUERY_INFO = _PDH_LOG_SERVICE_QUERY_INFO_A;
554   {$EXTERNALSYM PDH_LOG_SERVICE_QUERY_INFO}
555   PPDH_LOG_SERVICE_QUERY_INFO = PPDH_LOG_SERVICE_QUERY_INFO_A;
556   {$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO}
557   TPdhLogServiceQueryInfo = _PDH_LOG_SERVICE_QUERY_INFO_A;
558   {$ENDIF UNICODE}
559 
560 //
561 //  Time value constants
562 //
563 
564 const
565   MAX_TIME_VALUE = LONGLONG($7FFFFFFFFFFFFFFF);
566   {$EXTERNALSYM MAX_TIME_VALUE}
567   MIN_TIME_VALUE = LONGLONG(0);
568   {$EXTERNALSYM MIN_TIME_VALUE}
569 
570 // function definitions
571 
572 function PdhGetDllVersion(var lpdwVersion: DWORD): PDH_STATUS; stdcall;
573 {$EXTERNALSYM PdhGetDllVersion}
574 
575 //
576 //  Query Functions
577 //
578 
579 function PdhOpenQueryA(szDataSource: LPCSTR; dwUserData: DWORD_PTR;
580   var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;
581 {$EXTERNALSYM PdhOpenQueryA}
582 function PdhOpenQueryW(szDataSource: LPCWSTR; dwUserData: DWORD_PTR;
583   var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;
584 {$EXTERNALSYM PdhOpenQueryW}
585 function PdhOpenQuery(szDataSource: LPCTSTR; dwUserData: DWORD_PTR;
586   var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;
587 {$EXTERNALSYM PdhOpenQuery}
588 
589 function PdhAddCounterA(hQuery: PDH_HQUERY; szFullCounterPath: LPCSTR;
590   dwUserData: DWORD_PTR; var phCounter: PDH_HCOUNTER): PDH_STATUS; stdcall;
591 {$EXTERNALSYM PdhAddCounterA}
592 function PdhAddCounterW(hQuery: PDH_HQUERY; szFullCounterPath: LPCWSTR;
593   dwUserData: DWORD_PTR; var phCounter: PDH_HCOUNTER): PDH_STATUS; stdcall;
594 {$EXTERNALSYM PdhAddCounterW}
595 function PdhAddCounter(hQuery: PDH_HQUERY; szFullCounterPath: LPCTSTR;
596   dwUserData: DWORD_PTR; var phCounter: PDH_HCOUNTER): PDH_STATUS; stdcall;
597 {$EXTERNALSYM PdhAddCounter}
598 
599 function PdhRemoveCounter(hCounter: PDH_HCOUNTER): PDH_STATUS; stdcall;
600 {$EXTERNALSYM PdhRemoveCounter}
601 
602 function PdhCollectQueryData(hQuery: PDH_HQUERY): PDH_STATUS; stdcall;
603 {$EXTERNALSYM PdhCollectQueryData}
604 
605 function PdhCloseQuery(hQuery: PDH_HQUERY): PDH_STATUS; stdcall;
606 {$EXTERNALSYM PdhCloseQuery}
607 
608 //
609 //  Counter Functions
610 //
611 
612 function PdhGetFormattedCounterValue(hCounter: PDH_HCOUNTER; dwFormat: DWORD;
613   lpdwType: LPDWORD; var pValue: PDH_FMT_COUNTERVALUE): PDH_STATUS; stdcall;
614 {$EXTERNALSYM PdhGetFormattedCounterValue}
615 
616 function PdhGetFormattedCounterArrayA(hCounter: PDH_HCOUNTER; dwFormat: DWORD;
617   var lpdwBufferSize, lpdwItemCount: DWORD;
618   var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM_A): PDH_STATUS; stdcall;
619 {$EXTERNALSYM PdhGetFormattedCounterArrayA}
620 function PdhGetFormattedCounterArrayW(hCounter: PDH_HCOUNTER; dwFormat: DWORD;
621   var lpdwBufferSize, lpdwItemCount: DWORD;
622   var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM_W): PDH_STATUS; stdcall;
623 {$EXTERNALSYM PdhGetFormattedCounterArrayW}
624 function PdhGetFormattedCounterArray(hCounter: PDH_HCOUNTER; dwFormat: DWORD;
625   var lpdwBufferSize, lpdwItemCount: DWORD;
626   var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM): PDH_STATUS; stdcall;
627 {$EXTERNALSYM PdhGetFormattedCounterArray}
628 
629 // dwFormat flag values
630 
631 const
632   PDH_FMT_RAW      = DWORD($00000010);
633   {$EXTERNALSYM PDH_FMT_RAW}
634   PDH_FMT_ANSI     = DWORD($00000020);
635   {$EXTERNALSYM PDH_FMT_ANSI}
636   PDH_FMT_UNICODE  = DWORD($00000040);
637   {$EXTERNALSYM PDH_FMT_UNICODE}
638   PDH_FMT_LONG     = DWORD($00000100);
639   {$EXTERNALSYM PDH_FMT_LONG}
640   PDH_FMT_DOUBLE   = DWORD($00000200);
641   {$EXTERNALSYM PDH_FMT_DOUBLE}
642   PDH_FMT_LARGE    = DWORD($00000400);
643   {$EXTERNALSYM PDH_FMT_LARGE}
644   PDH_FMT_NOSCALE  = DWORD($00001000);
645   {$EXTERNALSYM PDH_FMT_NOSCALE}
646   PDH_FMT_1000     = DWORD($00002000);
647   {$EXTERNALSYM PDH_FMT_1000}
648   PDH_FMT_NODATA   = DWORD($00004000);
649   {$EXTERNALSYM PDH_FMT_NODATA}
650   PDH_FMT_NOCAP100 = DWORD($00008000);
651   {$EXTERNALSYM PDH_FMT_NODATA}
652 
653   PERF_DETAIL_COSTLY   = DWORD($00010000);
654   {$EXTERNALSYM PERF_DETAIL_COSTLY}
655   PERF_DETAIL_STANDARD = DWORD($0000FFFF);
656   {$EXTERNALSYM PERF_DETAIL_STANDARD}
657 
658 function PdhGetRawCounterValue(hCounter: PDH_HCOUNTER; lpdwType: LPDWORD;
659   var pValue: PDH_RAW_COUNTER): PDH_STATUS; stdcall;
660 {$EXTERNALSYM PdhGetRawCounterValue}
661 
662 function PdhGetRawCounterArrayA(hCounter: PDH_HCOUNTER; var lpdwBufferSize,
663   lpdwItemCount: DWORD; var ItemBuffer: PDH_RAW_COUNTER_ITEM_A): PDH_STATUS; stdcall;
664 {$EXTERNALSYM PdhGetRawCounterArrayA}
665 function PdhGetRawCounterArrayW(hCounter: PDH_HCOUNTER; var lpdwBufferSize,
666   lpdwItemCount: DWORD; var ItemBuffer: PDH_RAW_COUNTER_ITEM_W): PDH_STATUS; stdcall;
667 {$EXTERNALSYM PdhGetRawCounterArrayW}
668 function PdhGetRawCounterArray(hCounter: PDH_HCOUNTER; var lpdwBufferSize,
669   lpdwItemCount: DWORD; var ItemBuffer: PDH_RAW_COUNTER_ITEM): PDH_STATUS; stdcall;
670 {$EXTERNALSYM PdhGetRawCounterArray}
671 
672 function PdhCalculateCounterFromRawValue(hCounter: PDH_HCOUNTER; dwFormat: DWORD;
673   rawValue1, rawValue2: PPDH_RAW_COUNTER; var fmtValue: PDH_FMT_COUNTERVALUE): PDH_STATUS; stdcall;
674 {$EXTERNALSYM PdhCalculateCounterFromRawValue}
675 
676 function PdhComputeCounterStatistics(hCounter: PDH_HCOUNTER; dwFormat, dwFirstEntry,
677   dwNumEntries: DWORD; lpRawValueArray: PPDH_RAW_COUNTER; var data: PDH_STATISTICS): PDH_STATUS; stdcall;
678 {$EXTERNALSYM PdhComputeCounterStatistics}
679 
680 function PdhGetCounterInfoA(hCounter: PDH_HCOUNTER; bRetrieveExplainText: Boolean;
681   var pdwBufferSize: DWORD; lpBuffer: PPDH_COUNTER_INFO_A): PDH_STATUS; stdcall;
682 {$EXTERNALSYM PdhGetCounterInfoA}
683 function PdhGetCounterInfoW(hCounter: PDH_HCOUNTER; bRetrieveExplainText: Boolean;
684   var pdwBufferSize: DWORD; lpBuffer: PPDH_COUNTER_INFO_W): PDH_STATUS; stdcall;
685 {$EXTERNALSYM PdhGetCounterInfoW}
686 function PdhGetCounterInfo(hCounter: PDH_HCOUNTER; bRetrieveExplainText: Boolean;
687   var pdwBufferSize: DWORD; lpBuffer: PPDH_COUNTER_INFO): PDH_STATUS; stdcall;
688 {$EXTERNALSYM PdhGetCounterInfo}
689 
690 const
691   PDH_MAX_SCALE = Longint(7);
692   {$EXTERNALSYM PDH_MAX_SCALE}
693   PDH_MIN_SCALE = Longint(-7);
694   {$EXTERNALSYM PDH_MIN_SCALE}
695 
696 function PdhSetCounterScaleFactor(hCounter: PDH_HCOUNTER; lFactor: LONG): PDH_STATUS; stdcall;
697 {$EXTERNALSYM PdhSetCounterScaleFactor}
698 
699 //
700 //   Browsing and enumeration functions
701 //
702 
703 function PdhConnectMachineA(szMachineName: LPCSTR): PDH_STATUS; stdcall;
704 {$EXTERNALSYM PdhConnectMachineA}
705 function PdhConnectMachineW(szMachineName: LPCWSTR): PDH_STATUS; stdcall;
706 {$EXTERNALSYM PdhConnectMachineW}
707 function PdhConnectMachine(szMachineName: LPCTSTR): PDH_STATUS; stdcall;
708 {$EXTERNALSYM PdhConnectMachine}
709 
710 function PdhEnumMachinesA(szDataSource: LPCSTR; mszMachineList: LPSTR;
711   pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
712 {$EXTERNALSYM PdhEnumMachinesA}
713 function PdhEnumMachinesW(szDataSource: LPCWSTR; mszMachineList: LPWSTR;
714   pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
715 {$EXTERNALSYM PdhEnumMachinesW}
716 function PdhEnumMachines(szDataSource: LPCTSTR; mszMachineList: LPTSTR;
717   pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
718 {$EXTERNALSYM PdhEnumMachines}
719 
720 function PdhEnumObjectsA(szDataSource, szMachineName: LPCSTR; mszObjectList: LPSTR;
721   var pcchBufferSize: DWORD; dwDetailLevel: DWORD; bRefresh: BOOL): PDH_STATUS; stdcall;
722 {$EXTERNALSYM PdhEnumObjectsA}
723 function PdhEnumObjectsW(szDataSource, szMachineName: LPCWSTR; mszObjectList: LPWSTR;
724   var pcchBufferSize: DWORD; dwDetailLevel: DWORD; bRefresh: BOOL): PDH_STATUS; stdcall;
725 {$EXTERNALSYM PdhEnumObjectsW}
726 function PdhEnumObjects(szDataSource, szMachineName: LPCTSTR; mszObjectList: LPTSTR;
727   var pcchBufferSize: DWORD; dwDetailLevel: DWORD; bRefresh: BOOL): PDH_STATUS; stdcall;
728 {$EXTERNALSYM PdhEnumObjects}
729 
730 function PdhEnumObjectItemsA(szDataSource, szMachineName, szObjectName: LPCSTR;
731   mszCounterList: LPSTR; var pcchCounterListLength: DWORD; mszInstanceList: LPSTR;
732   var pcchInstanceListLength: DWORD; dwDetailLevel, dwFlags: DWORD): PDH_STATUS; stdcall;
733 {$EXTERNALSYM PdhEnumObjectItemsA}
734 function PdhEnumObjectItemsW(szDataSource, szMachineName, szObjectName: LPCWSTR;
735   mszCounterList: LPWSTR; var pcchCounterListLength: DWORD; mszInstanceList: LPWSTR;
736   var pcchInstanceListLength: DWORD; dwDetailLevel, dwFlags: DWORD): PDH_STATUS; stdcall;
737 {$EXTERNALSYM PdhEnumObjectItemsW}
738 function PdhEnumObjectItems(szDataSource, szMachineName, szObjectName: LPCTSTR;
739   mszCounterList: LPTSTR; var pcchCounterListLength: DWORD; mszInstanceList: LPTSTR;
740   var pcchInstanceListLength: DWORD; dwDetailLevel, dwFlags: DWORD): PDH_STATUS; stdcall;
741 {$EXTERNALSYM PdhEnumObjectItems}
742 
743 const
744   PDH_OBJECT_HAS_INSTANCES  = $00000001;
745   {$EXTERNALSYM PDH_OBJECT_HAS_INSTANCES}
746 
747 function PdhMakeCounterPathA(pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A;
748   szFullPathBuffer: LPSTR; var pcchBufferSize: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
749 {$EXTERNALSYM PdhMakeCounterPathA}
750 function PdhMakeCounterPathW(pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W;
751   szFullPathBuffer: LPWSTR; var pcchBufferSize: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
752 {$EXTERNALSYM PdhMakeCounterPathW}
753 function PdhMakeCounterPath(pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS;
754   szFullPathBuffer: LPTSTR; var pcchBufferSize: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
755 {$EXTERNALSYM PdhMakeCounterPath}
756 
757 // todo shouldn't pCounterPathElements be a pointer to ...?
758 
PdhParseCounterPathAnull759 function PdhParseCounterPathA(szFullPathBuffer: LPCSTR;
760   pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A; var pdwBufferSize: DWORD;
761   dwFlags: DWORD): PDH_STATUS; stdcall;
762 {$EXTERNALSYM PdhParseCounterPathA}
PdhParseCounterPathWnull763 function PdhParseCounterPathW(szFullPathBuffer: LPCWSTR;
764   pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W; var pdwBufferSize: DWORD;
765   dwFlags: DWORD): PDH_STATUS; stdcall;
766 {$EXTERNALSYM PdhParseCounterPathW}
PdhParseCounterPathnull767 function PdhParseCounterPath(szFullPathBuffer: LPCTSTR;
768   pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS; var pdwBufferSize: DWORD;
769   dwFlags: DWORD): PDH_STATUS; stdcall;
770 {$EXTERNALSYM PdhParseCounterPath}
771 
772 const
773   PDH_PATH_WBEM_RESULT       = DWORD($00000001);
774   {$EXTERNALSYM PDH_PATH_WBEM_RESULT}
775   PDH_PATH_WBEM_INPUT        = DWORD($00000002);
776   {$EXTERNALSYM PDH_PATH_WBEM_INPUT}
777 
PDH_PATH_LANG_FLAGSnull778 function PDH_PATH_LANG_FLAGS(LangId, Flags: DWORD): DWORD;
779 {$EXTERNALSYM PDH_PATH_LANG_FLAGS}
780 
PdhParseInstanceNameAnull781 function PdhParseInstanceNameA(szInstanceString: LPSTR; szInstanceName: LPCSTR;
782   var pcchInstanceNameLength: DWORD; szParentName: LPSTR;
783   var pcchParentNameLength: DWORD; lpIndex: LPDWORD): PDH_STATUS; stdcall;
784 {$EXTERNALSYM PdhParseInstanceNameA}
PdhParseInstanceNameWnull785 function PdhParseInstanceNameW(szInstanceString: LPWSTR; szInstanceName: LPCWSTR;
786   var pcchInstanceNameLength: DWORD; szParentName: LPWSTR;
787   var pcchParentNameLength: DWORD; lpIndex: LPDWORD): PDH_STATUS; stdcall;
788 {$EXTERNALSYM PdhParseInstanceNameW}
PdhParseInstanceNamenull789 function PdhParseInstanceName(szInstanceString: LPTSTR; szInstanceName: LPCTSTR;
790   var pcchInstanceNameLength: DWORD; szParentName: LPTSTR;
791   var pcchParentNameLength: DWORD; lpIndex: LPDWORD): PDH_STATUS; stdcall;
792 {$EXTERNALSYM PdhParseInstanceName}
793 
PdhValidatePathAnull794 function PdhValidatePathA(szFullPathBuffer: LPCSTR): PDH_STATUS; stdcall;
795 {$EXTERNALSYM PdhValidatePathA}
PdhValidatePathWnull796 function PdhValidatePathW(szFullPathBuffer: LPCWSTR): PDH_STATUS; stdcall;
797 {$EXTERNALSYM PdhValidatePathW}
PdhValidatePathnull798 function PdhValidatePath(szFullPathBuffer: LPCTSTR): PDH_STATUS; stdcall;
799 {$EXTERNALSYM PdhValidatePath}
800 
PdhGetDefaultPerfObjectAnull801 function PdhGetDefaultPerfObjectA(szDataSource, szMachineName: LPCSTR;
802   szDefaultObjectName: LPSTR; var pcchBufferSize: DWORD): PDH_STATUS; stdcall;
803 {$EXTERNALSYM PdhGetDefaultPerfObjectA}
PdhGetDefaultPerfObjectWnull804 function PdhGetDefaultPerfObjectW(szDataSource, szMachineName: LPCWSTR;
805   szDefaultObjectName: LPWSTR; var pcchBufferSize: DWORD): PDH_STATUS; stdcall;
806 {$EXTERNALSYM PdhGetDefaultPerfObjectW}
PdhGetDefaultPerfObjectnull807 function PdhGetDefaultPerfObject(szDataSource, szMachineName: LPCTSTR;
808   szDefaultObjectName: LPTSTR; var pcchBufferSize: DWORD): PDH_STATUS; stdcall;
809 {$EXTERNALSYM PdhGetDefaultPerfObject}
810 
PdhGetDefaultPerfCounterAnull811 function PdhGetDefaultPerfCounterA(szDataSource, szMachineName, szObjectName: LPCSTR;
812   szDefaultCounterName: LPSTR; var pcchBufferSize: DWORD): PDH_STATUS; stdcall;
813 {$EXTERNALSYM PdhGetDefaultPerfCounterA}
PdhGetDefaultPerfCounterWnull814 function PdhGetDefaultPerfCounterW(szDataSource, szMachineName, szObjectName: LPCWSTR;
815   szDefaultCounterName: LPWSTR; var pcchBufferSize: DWORD): PDH_STATUS; stdcall;
816 {$EXTERNALSYM PdhGetDefaultPerfCounterW}
PdhGetDefaultPerfCounternull817 function PdhGetDefaultPerfCounter(szDataSource, szMachineName, szObjectName: LPCTSTR;
818   szDefaultCounterName: LPTSTR; var pcchBufferSize: DWORD): PDH_STATUS; stdcall;
819 {$EXTERNALSYM PdhGetDefaultPerfCounter}
820 
821 type
wArgnull822   CounterPathCallBack = function(dwArg: DWORD_PTR): PDH_STATUS; stdcall;
823   {$EXTERNALSYM CounterPathCallBack}
824 
825 const
826   PDH_CF_INCLUDEINSTANCEINDEX    = 1 shl 0;
827   PDH_CF_SINGLECOUNTERPERADD     = 1 shl 1;
828   PDH_CF_SINGLECOUNTERPERDIALOG  = 1 shl 2;
829   PDH_CF_LOCALCOUNTERSONLY       = 1 shl 3;
830   PDH_CF_WILDCARDINSTANCES       = 1 shl 4;
831   PDH_CF_HIDEDETAILBOX           = 1 shl 5;
832   PDH_CF_INITIALIZEPATH          = 1 shl 6;
833   PDH_CF_DISABLEMACHINESELECTION = 1 shl 7;
834   PDH_CF_INCLUDECOSTLYOBJECTS    = 1 shl 8;
835   PDH_CF_SHOWOBJECTBROWSER       = 1 shl 9;
836   PDH_CF_RESERVED                = DWORD($FFFFFD00);
837 
838 type
839   _BrowseDlgConfig_HW = record
840     // Configuration flags
841     dwConfigFlags: DWORD;
842     hWndOwner: HWND;
843     hDataSource: PDH_HLOG;
844     szReturnPathBuffer: LPWSTR;
845     cchReturnPathLength: DWORD;
846     pCallBack: CounterPathCallBack;
847     dwCallBackArg: DWORD_PTR;
848     CallBackStatus: PDH_STATUS;
849     dwDefaultDetailLevel: DWORD;
850     szDialogBoxCaption: LPWSTR;
851   end;
852   {$EXTERNALSYM _BrowseDlgConfig_HW}
853   PDH_BROWSE_DLG_CONFIG_HW = _BrowseDlgConfig_HW;
854   {$EXTERNALSYM PDH_BROWSE_DLG_CONFIG_HW}
855   PPDH_BROWSE_DLG_CONFIG_HW = ^PDH_BROWSE_DLG_CONFIG_HW;
856   {$EXTERNALSYM PPDH_BROWSE_DLG_CONFIG_HW}
857   TPdhBrowseDlgConfigHW = PDH_BROWSE_DLG_CONFIG_HW;
858   PPdhBrowseDlgConfigHW = PPDH_BROWSE_DLG_CONFIG_HW;
859 
860   _BrowseDlgConfig_HA = record
861     // Configuration flags
862     dwConfigFlags: DWORD;
863     hWndOwner: HWND;
864     hDataSource: PDH_HLOG;
865     szReturnPathBuffer: LPSTR;
866     cchReturnPathLength: DWORD;
867     pCallBack: CounterPathCallBack;
868     dwCallBackArg: DWORD_PTR;
869     CallBackStatus: PDH_STATUS;
870     dwDefaultDetailLevel: DWORD;
871     szDialogBoxCaption: LPSTR;
872   end;
873   {$EXTERNALSYM _BrowseDlgConfig_HA}
874   PDH_BROWSE_DLG_CONFIG_HA = _BrowseDlgConfig_HA;
875   {$EXTERNALSYM PDH_BROWSE_DLG_CONFIG_HA}
876   PPDH_BROWSE_DLG_CONFIG_HA = ^PDH_BROWSE_DLG_CONFIG_HA;
877   {$EXTERNALSYM PPDH_BROWSE_DLG_CONFIG_HA}
878   TPdhBrowseDlgConfigHA = PDH_BROWSE_DLG_CONFIG_HA;
879   PPdhBrowseDlgConfigHA = PPDH_BROWSE_DLG_CONFIG_HA;
880 
881   {$IFDEF UNICODE}
882   PDH_BROWSE_DLG_CONFIG_H = PDH_BROWSE_DLG_CONFIG_HW;
883   PPDH_BROWSE_DLG_CONFIG_H = PPDH_BROWSE_DLG_CONFIG_HW;
884   {$ELSE}
885   PDH_BROWSE_DLG_CONFIG_H = PDH_BROWSE_DLG_CONFIG_HA;
886   PPDH_BROWSE_DLG_CONFIG_H = PPDH_BROWSE_DLG_CONFIG_HA;
887   {$ENDIF UNICODE}
888 
889   PPDH_BROWSE_DLG_CONFIG_A = ^_BrowseDlgConfig_A;
890   {$EXTERNALSYM PPDH_BROWSE_DLG_CONFIG_A}
891   _BrowseDlgConfig_A = record
892     dwConfigFlags: DWORD;
893     hWndOwner: HWND;
894     szDataSource: LPSTR;
895     szReturnPathBuffer: LPSTR;
896     cchReturnPathLength: DWORD;
897     pCallBack: CounterPathCallBack;
898     dwCallBackArg: DWORD_PTR;
899     CallBackStatus: PDH_STATUS;
900     dwDefaultDetailLevel: DWORD;
901     szDialogBoxCaption: LPSTR;
902   end;
903   {$EXTERNALSYM _BrowseDlgConfig_A}
904   PDH_BROWSE_DLG_CONFIG_A = _BrowseDlgConfig_A;
905   {$EXTERNALSYM PDH_BROWSE_DLG_CONFIG_A}
906   TPdhBrowseDlgConfigA = PDH_BROWSE_DLG_CONFIG_A;
907   PPdhBrowseDlgConfigA = PPDH_BROWSE_DLG_CONFIG_A;
908 
909   PPDH_BROWSE_DLG_CONFIG_W = ^_BrowseDlgConfig_W;
910   {$EXTERNALSYM PPDH_BROWSE_DLG_CONFIG_W}
911   _BrowseDlgConfig_W = record
912     dwConfigFlags: DWORD;
913     hWndOwner: HWND;
914     szDataSource: LPWSTR;
915     szReturnPathBuffer: LPWSTR;
916     cchReturnPathLength: DWORD;
917     pCallBack: CounterPathCallBack;
918     dwCallBackArg: DWORD_PTR;
919     CallBackStatus: PDH_STATUS;
920     dwDefaultDetailLevel: DWORD;
921     szDialogBoxCaption: LPWSTR;
922   end;
923   {$EXTERNALSYM _BrowseDlgConfig_W}
924   PDH_BROWSE_DLG_CONFIG_W = _BrowseDlgConfig_W;
925   {$EXTERNALSYM PDH_BROWSE_DLG_CONFIG_W}
926   TPdhBrowseDlgConfigW = PDH_BROWSE_DLG_CONFIG_W;
927   PPdhBrowseDlgConfigW = PPDH_BROWSE_DLG_CONFIG_W;
928 
929   {$IFDEF UNICODE}
930   PPdhBrowseDlgConfig = PPdhBrowseDlgConfigW;
931   PDH_BROWSE_DLG_CONFIG = PDH_BROWSE_DLG_CONFIG_W;
932   {$EXTERNALSYM PDH_BROWSE_DLG_CONFIG}
933   PPDH_BROWSE_DLG_CONFIG = PPDH_BROWSE_DLG_CONFIG_W;
934   {$EXTERNALSYM PPDH_BROWSE_DLG_CONFIG}
935   TPdhBrowseDlgConfig = TPdhBrowseDlgConfigW;
936   {$ELSE}
937   PPdhBrowseDlgConfig = PPdhBrowseDlgConfigA;
938   PDH_BROWSE_DLG_CONFIG = PDH_BROWSE_DLG_CONFIG_A;
939   {$EXTERNALSYM PDH_BROWSE_DLG_CONFIG}
940   PPDH_BROWSE_DLG_CONFIG = PPDH_BROWSE_DLG_CONFIG_A;
941   {$EXTERNALSYM PPDH_BROWSE_DLG_CONFIG}
942   TPdhBrowseDlgConfig = TPdhBrowseDlgConfigA;
943   {$ENDIF UNICODE}
944 
PdhBrowseCountersAnull945 function PdhBrowseCountersA(const pBrowseDlgData: PDH_BROWSE_DLG_CONFIG_A): PDH_STATUS; stdcall;
946 {$EXTERNALSYM PdhBrowseCountersA}
PdhBrowseCountersWnull947 function PdhBrowseCountersW(const pBrowseDlgData: PDH_BROWSE_DLG_CONFIG_W): PDH_STATUS; stdcall;
948 {$EXTERNALSYM PdhBrowseCountersW}
PdhBrowseCountersnull949 function PdhBrowseCounters(const pBrowseDlgData: PDH_BROWSE_DLG_CONFIG): PDH_STATUS; stdcall;
950 {$EXTERNALSYM PdhBrowseCounters}
951 
PdhExpandCounterPathAnull952 function PdhExpandCounterPathA(szWildCardPath: LPCSTR; mszExpandedPathList: LPSTR;
953   var pcchPathListLength: DWORD): PDH_STATUS; stdcall;
954 {$EXTERNALSYM PdhExpandCounterPathA}
PdhExpandCounterPathWnull955 function PdhExpandCounterPathW(szWildCardPath: LPCWSTR; mszExpandedPathList: LPWSTR;
956   var pcchPathListLength: DWORD): PDH_STATUS; stdcall;
957 {$EXTERNALSYM PdhExpandCounterPathW}
PdhExpandCounterPathnull958 function PdhExpandCounterPath(szWildCardPath: LPCTSTR; mszExpandedPathList: LPTSTR;
959   var pcchPathListLength: DWORD): PDH_STATUS; stdcall;
960 {$EXTERNALSYM PdhExpandCounterPath}
961 
962 //
963 //  v2.0 functions
964 //
965 
PdhLookupPerfNameByIndexAnull966 function PdhLookupPerfNameByIndexA(szMachineName: LPCSTR; dwNameIndex: DWORD;
967   szNameBuffer: LPSTR; var pcchNameBufferSize: DWORD): PDH_STATUS; stdcall;
968 {$EXTERNALSYM PdhLookupPerfNameByIndexA}
PdhLookupPerfNameByIndexWnull969 function PdhLookupPerfNameByIndexW(szMachineName: LPCWSTR; dwNameIndex: DWORD;
970   szNameBuffer: LPWSTR; var pcchNameBufferSize: DWORD): PDH_STATUS; stdcall;
971 {$EXTERNALSYM PdhLookupPerfNameByIndexW}
PdhLookupPerfNameByIndexnull972 function PdhLookupPerfNameByIndex(szMachineName: LPCTSTR; dwNameIndex: DWORD;
973   szNameBuffer: LPTSTR; var pcchNameBufferSize: DWORD): PDH_STATUS; stdcall;
974 {$EXTERNALSYM PdhLookupPerfNameByIndex}
975 
PdhLookupPerfIndexByNameAnull976 function PdhLookupPerfIndexByNameA(szMachineName, szNameBuffer: LPCSTR;
977   var pdwIndex: DWORD): PDH_STATUS; stdcall;
978 {$EXTERNALSYM PdhLookupPerfIndexByNameA}
PdhLookupPerfIndexByNameWnull979 function PdhLookupPerfIndexByNameW(szMachineName, szNameBuffer: LPCWSTR;
980   var pdwIndex: DWORD): PDH_STATUS; stdcall;
981 {$EXTERNALSYM PdhLookupPerfIndexByNameW}
PdhLookupPerfIndexByNamenull982 function PdhLookupPerfIndexByName(szMachineName, szNameBuffer: LPCTSTR;
983   var pdwIndex: DWORD): PDH_STATUS; stdcall;
984 {$EXTERNALSYM PdhLookupPerfIndexByName}
985 
986 const
987   PDH_NOEXPANDCOUNTERS   = 1;
988   {$EXTERNALSYM PDH_NOEXPANDCOUNTERS}
989   PDH_NOEXPANDINSTANCES  = 2;
990   {$EXTERNALSYM PDH_NOEXPANDINSTANCES}
991   PDH_REFRESHCOUNTERS    = 4;
992   {$EXTERNALSYM PDH_REFRESHCOUNTERS}
993 
PdhExpandWildCardPathAnull994 function PdhExpandWildCardPathA(szDataSource, szWildCardPath: LPCSTR;
995   mszExpandedPathList: LPSTR; var pcchPathListLength: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
996 {$EXTERNALSYM PdhExpandWildCardPathA}
PdhExpandWildCardPathWnull997 function PdhExpandWildCardPathW(szDataSource, szWildCardPath: LPCWSTR;
998   mszExpandedPathList: LPWSTR; var pcchPathListLength: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
999 {$EXTERNALSYM PdhExpandWildCardPathW}
PdhExpandWildCardPathnull1000 function PdhExpandWildCardPath(szDataSource, szWildCardPath: LPCTSTR;
1001   mszExpandedPathList: LPTSTR; var pcchPathListLength: DWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
1002 {$EXTERNALSYM PdhExpandWildCardPath}
1003 
1004 //
1005 //   Logging Functions
1006 //
1007 
1008 const
1009   PDH_LOG_READ_ACCESS        = DWORD($00010000);
1010   {$EXTERNALSYM PDH_LOG_READ_ACCESS}
1011   PDH_LOG_WRITE_ACCESS       = DWORD($00020000);
1012   {$EXTERNALSYM PDH_LOG_WRITE_ACCESS}
1013   PDH_LOG_UPDATE_ACCESS      = DWORD($00040000);
1014   {$EXTERNALSYM PDH_LOG_UPDATE_ACCESS}
1015   PDH_LOG_ACCESS_MASK        = DWORD($000F0000);
1016   {$EXTERNALSYM PDH_LOG_ACCESS_MASK}
1017 
1018   PDH_LOG_CREATE_NEW         = DWORD($00000001);
1019   {$EXTERNALSYM PDH_LOG_CREATE_NEW}
1020   PDH_LOG_CREATE_ALWAYS      = DWORD($00000002);
1021   {$EXTERNALSYM PDH_LOG_CREATE_ALWAYS}
1022   PDH_LOG_OPEN_ALWAYS        = DWORD($00000003);
1023   {$EXTERNALSYM PDH_LOG_OPEN_ALWAYS}
1024   PDH_LOG_OPEN_EXISTING      = DWORD($00000004);
1025   {$EXTERNALSYM PDH_LOG_OPEN_EXISTING}
1026   PDH_LOG_CREATE_MASK        = DWORD($0000000F);
1027   {$EXTERNALSYM PDH_LOG_CREATE_MASK}
1028 
1029   PDH_LOG_OPT_USER_STRING    = DWORD($01000000);
1030   {$EXTERNALSYM PDH_LOG_OPT_USER_STRING}
1031   PDH_LOG_OPT_CIRCULAR       = DWORD($02000000);
1032   {$EXTERNALSYM PDH_LOG_OPT_CIRCULAR}
1033   PDH_LOG_OPT_MAX_IS_BYTES   = DWORD($04000000);
1034   {$EXTERNALSYM PDH_LOG_OPT_MAX_IS_BYTES}
1035   PDH_LOG_OPT_APPEND         = DWORD($08000000);
1036   {$EXTERNALSYM PDH_LOG_OPT_APPEND}
1037   PDH_LOG_OPT_MASK           = DWORD($0F000000);
1038   {$EXTERNALSYM PDH_LOG_OPT_MASK}
1039 
1040   PDH_LOG_TYPE_UNDEFINED     = 0;
1041   {$EXTERNALSYM PDH_LOG_TYPE_UNDEFINED}
1042   PDH_LOG_TYPE_CSV           = 1;
1043   {$EXTERNALSYM PDH_LOG_TYPE_CSV}
1044   PDH_LOG_TYPE_TSV           = 2;
1045   {$EXTERNALSYM PDH_LOG_TYPE_TSV}
1046   //PDH_LOG_TYPE_BINARY        = 3;  // this is the retired binary format
1047   //{$EXTERNALSYM PDH_LOG_TYPE_BINARY}
1048   PDH_LOG_TYPE_TRACE_KERNEL  = 4;
1049   {$EXTERNALSYM PDH_LOG_TYPE_TRACE_KERNEL}
1050   PDH_LOG_TYPE_TRACE_GENERIC = 5;
1051   {$EXTERNALSYM PDH_LOG_TYPE_TRACE_GENERIC}
1052   PDH_LOG_TYPE_PERFMON       = 6;
1053   {$EXTERNALSYM PDH_LOG_TYPE_PERFMON}
1054   PDH_LOG_TYPE_SQL           = 7;
1055   {$EXTERNALSYM PDH_LOG_TYPE_SQL}
1056   PDH_LOG_TYPE_BINARY        = 8;
1057   {$EXTERNALSYM PDH_LOG_TYPE_BINARY}
1058 
PdhOpenLogAnull1059 function PdhOpenLogA(szLogFileName: LPCSTR; dwAccessFlags: DWORD;
1060   lpdwLogType: LPDWORD; hQuery: PDH_HQUERY; dwMaxRecords: DWORD;
1061   szUserCaption: LPCSTR; var phLog: PDH_HLOG): PDH_STATUS; stdcall;
1062 {$EXTERNALSYM PdhOpenLogA}
PdhOpenLogWnull1063 function PdhOpenLogW(szLogFileName: LPCWSTR; dwAccessFlags: DWORD;
1064   lpdwLogType: LPDWORD; hQuery: PDH_HQUERY; dwMaxRecords: DWORD;
1065   szUserCaption: LPCWSTR; var phLog: PDH_HLOG): PDH_STATUS; stdcall;
1066 {$EXTERNALSYM PdhOpenLogW}
PdhOpenLognull1067 function PdhOpenLog(szLogFileName: LPCTSTR; dwAccessFlags: DWORD;
1068   lpdwLogType: LPDWORD; hQuery: PDH_HQUERY; dwMaxRecords: DWORD;
1069   szUserCaption: LPCTSTR; var phLog: PDH_HLOG): PDH_STATUS; stdcall;
1070 {$EXTERNALSYM PdhOpenLog}
1071 
PdhUpdateLogAnull1072 function PdhUpdateLogA(hLog: PDH_HLOG; szUserString: LPCSTR): PDH_STATUS; stdcall;
1073 {$EXTERNALSYM PdhUpdateLogA}
PdhUpdateLogWnull1074 function PdhUpdateLogW(hLog: PDH_HLOG; szUserString: LPCWSTR): PDH_STATUS; stdcall;
1075 {$EXTERNALSYM PdhUpdateLogW}
PdhUpdateLognull1076 function PdhUpdateLog(hLog: PDH_HLOG; szUserString: LPCTSTR): PDH_STATUS; stdcall;
1077 {$EXTERNALSYM PdhUpdateLog}
1078 
PdhUpdateLogFileCatalognull1079 function PdhUpdateLogFileCatalog(hLog: PDH_HLOG): PDH_STATUS; stdcall;
1080 {$EXTERNALSYM PdhUpdateLogFileCatalog}
1081 
PdhGetLogFileSizenull1082 function PdhGetLogFileSize(hLog: PDH_HLOG; var llSize: LONGLONG): PDH_STATUS; stdcall;
1083 {$EXTERNALSYM PdhGetLogFileSize}
1084 
PdhCloseLognull1085 function PdhCloseLog(hLog: PDH_HLOG; dwFlags: DWORD): PDH_STATUS; stdcall;
1086 {$EXTERNALSYM PdhCloseLog}
1087 
1088 const
1089   PDH_FLAGS_CLOSE_QUERY = DWORD($00000001);
1090   {$EXTERNALSYM PDH_FLAGS_CLOSE_QUERY}
1091 
1092 //
1093 //  Data source selection dialog
1094 //
1095 
1096 const
1097   PDH_FLAGS_FILE_BROWSER_ONLY = DWORD($00000001);
1098   {$EXTERNALSYM PDH_FLAGS_FILE_BROWSER_ONLY}
1099 
PdhSelectDataSourceAnull1100 function PdhSelectDataSourceA(hWndOwner: HWND; dwFlags: DWORD;
1101   szDataSource: LPSTR; var pcchBufferLength: DWORD): PDH_STATUS; stdcall;
1102 {$EXTERNALSYM PdhSelectDataSourceA}
PdhSelectDataSourceWnull1103 function PdhSelectDataSourceW(hWndOwner: HWND; dwFlags: DWORD;
1104   szDataSource: LPWSTR; var pcchBufferLength: DWORD): PDH_STATUS; stdcall;
1105 {$EXTERNALSYM PdhSelectDataSourceW}
PdhSelectDataSourcenull1106 function PdhSelectDataSource(hWndOwner: HWND; dwFlags: DWORD;
1107   szDataSource: LPTSTR; var pcchBufferLength: DWORD): PDH_STATUS; stdcall;
1108 {$EXTERNALSYM PdhSelectDataSource}
1109 
PdhIsRealTimeQuerynull1110 function PdhIsRealTimeQuery(hQuery: PDH_HQUERY): BOOL; stdcall;
1111 {$EXTERNALSYM PdhIsRealTimeQuery}
1112 
PdhSetQueryTimeRangenull1113 function PdhSetQueryTimeRange(hQuery: PDH_HQUERY; var pInfo: PDH_TIME_INFO): PDH_STATUS; stdcall;
1114 {$EXTERNALSYM PdhSetQueryTimeRange}
1115 
PdhGetDataSourceTimeRangeAnull1116 function PdhGetDataSourceTimeRangeA(szDataSource: LPCSTR; var pdwNumEntries: DWORD;
1117   var pInfo: PDH_TIME_INFO; pdwBufferSize: LPDWORD): PDH_STATUS; stdcall;
1118 {$EXTERNALSYM PdhGetDataSourceTimeRangeA}
PdhGetDataSourceTimeRangeWnull1119 function PdhGetDataSourceTimeRangeW(szDataSource: LPCWSTR; var pdwNumEntries: DWORD;
1120   var pInfo: PDH_TIME_INFO; pdwBufferSize: LPDWORD): PDH_STATUS; stdcall;
1121 {$EXTERNALSYM PdhGetDataSourceTimeRangeW}
PdhGetDataSourceTimeRangenull1122 function PdhGetDataSourceTimeRange(szDataSource: LPCTSTR; var pdwNumEntries: DWORD;
1123   var pInfo: PDH_TIME_INFO; pdwBufferSize: LPDWORD): PDH_STATUS; stdcall;
1124 {$EXTERNALSYM PdhGetDataSourceTimeRange}
1125 
PdhCollectQueryDataExnull1126 function PdhCollectQueryDataEx(hQuery: PDH_HQUERY; dwIntervalTime: DWORD;
1127   hNewDataEvent: HANDLE): PDH_STATUS; stdcall;
1128 {$EXTERNALSYM PdhCollectQueryDataEx}
1129 
PdhFormatFromRawValuenull1130 function PdhFormatFromRawValue(dwCounterType, dwFormat: DWORD;
1131   var pTimeBase: LONGLONG; pRawValue1, pRawValue2: PPDH_RAW_COUNTER;
1132   var pFmtValue: PDH_FMT_COUNTERVALUE): PDH_STATUS; stdcall;
1133 {$EXTERNALSYM PdhFormatFromRawValue}
1134 
PdhGetCounterTimeBasenull1135 function PdhGetCounterTimeBase(hCounter: PDH_HCOUNTER; var pTimeBase: LONGLONG): PDH_STATUS; stdcall;
1136 {$EXTERNALSYM PdhGetCounterTimeBase}
1137 
PdhReadRawLogRecordnull1138 function PdhReadRawLogRecord(hLog: PDH_HLOG; ftRecord: FILETIME;
1139   var pRawLogRecord: PDH_RAW_LOG_RECORD; pdwBufferLength: LPDWORD): PDH_STATUS; stdcall;
1140 {$EXTERNALSYM PdhReadRawLogRecord}
1141 
1142 const
1143   DATA_SOURCE_REGISTRY    = DWORD($00000001);
1144   {$EXTERNALSYM DATA_SOURCE_REGISTRY}
1145   DATA_SOURCE_LOGFILE     = DWORD($00000002);
1146   {$EXTERNALSYM DATA_SOURCE_LOGFILE}
1147   DATA_SOURCE_WBEM        = DWORD($00000004);
1148   {$EXTERNALSYM DATA_SOURCE_WBEM}
1149 
PdhSetDefaultRealTimeDataSourcenull1150 function PdhSetDefaultRealTimeDataSource(dwDataSourceId: DWORD): PDH_STATUS; stdcall;
1151 {$EXTERNALSYM PdhSetDefaultRealTimeDataSource}
1152 
1153 // Extended API for WMI event trace logfile format
1154 //
1155 
PdhBindInputDataSourceWnull1156 function PdhBindInputDataSourceW(var phDataSource: PDH_HLOG; LogFileNameList: LPCWSTR): PDH_STATUS; stdcall;
1157 {$EXTERNALSYM PdhBindInputDataSourceW}
PdhBindInputDataSourceAnull1158 function PdhBindInputDataSourceA(var phDataSource: PDH_HLOG; LogFileNameList: LPCSTR): PDH_STATUS; stdcall;
1159 {$EXTERNALSYM PdhBindInputDataSourceA}
PdhBindInputDataSourcenull1160 function PdhBindInputDataSource(var phDataSource: PDH_HLOG; LogFileNameList: LPCTSTR): PDH_STATUS; stdcall;
1161 {$EXTERNALSYM PdhBindInputDataSource}
1162 
PdhOpenQueryHnull1163 function PdhOpenQueryH(hDataSource: PDH_HLOG; dwUserData: DWORD_PTR; var phQuery: PDH_HQUERY): PDH_STATUS; stdcall;
1164 {$EXTERNALSYM PdhOpenQueryH}
1165 
PdhEnumMachinesHWnull1166 function PdhEnumMachinesHW(hDataSource: PDH_HLOG; mszMachineList: LPWSTR; pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1167 {$EXTERNALSYM PdhEnumMachinesHW}
PdhEnumMachinesHAnull1168 function PdhEnumMachinesHA(hDataSource: PDH_HLOG; mszMachineList: LPSTR; pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1169 {$EXTERNALSYM PdhEnumMachinesHA}
PdhEnumMachinesHnull1170 function PdhEnumMachinesH(hDataSource: PDH_HLOG; mszMachineList: LPTSTR; pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1171 {$EXTERNALSYM PdhEnumMachinesH}
1172 
PdhEnumObjectsHAnull1173 function PdhEnumObjectsHA(hDataSource: PDH_HLOG; szMachineName: LPCSTR; mszObjectList: LPSTR; pcchBufferSize: LPDWORD;
1174   dwDetailLevel: DWORD; bRefresh: BOOL): PDH_STATUS; stdcall;
1175 {$EXTERNALSYM PdhEnumObjectsHA}
PdhEnumObjectsHWnull1176 function PdhEnumObjectsHW(hDataSource: PDH_HLOG; szMachineName: LPCWSTR; mszObjectList: LPWSTR; pcchBufferSize: LPDWORD;
1177   dwDetailLevel: DWORD; bRefresh: BOOL): PDH_STATUS; stdcall;
1178 {$EXTERNALSYM PdhEnumObjectsHW}
PdhEnumObjectsHnull1179 function PdhEnumObjectsH(hDataSource: PDH_HLOG; szMachineName: LPCTSTR; mszObjectList: LPWSTR; pcchBufferSize: LPDWORD;
1180   dwDetailLevel: DWORD; bRefresh: BOOL): PDH_STATUS; stdcall;
1181 {$EXTERNALSYM PdhEnumObjectsH}
1182 
PdhEnumObjectItemsHAnull1183 function PdhEnumObjectItemsHA(hDataSource: PDH_HLOG; szMachineName, szObjectName: LPCSTR; mszCounterList: LPSTR;
1184   pcchCounterListLength: LPDWORD; mszInstanceList: LPSTR; pcchInstanceListLength: LPDWORD;
1185   dwDetailLevel, dwFlags: DWORD): PDH_STATUS; stdcall;
1186 {$EXTERNALSYM PdhEnumObjectItemsHA}
PdhEnumObjectItemsHWnull1187 function PdhEnumObjectItemsHW(hDataSource: PDH_HLOG; szMachineName, szObjectName: LPCWSTR; mszCounterList: LPWSTR;
1188   pcchCounterListLength: LPDWORD; mszInstanceList: LPWSTR; pcchInstanceListLength: LPDWORD;
1189   dwDetailLevel, dwFlags: DWORD): PDH_STATUS; stdcall;
1190 {$EXTERNALSYM PdhEnumObjectItemsHW}
PdhEnumObjectItemsHnull1191 function PdhEnumObjectItemsH(hDataSource: PDH_HLOG; szMachineName, szObjectName: LPCTSTR; mszCounterList: LPTSTR;
1192   pcchCounterListLength: LPDWORD; mszInstanceList: LPTSTR; pcchInstanceListLength: LPDWORD;
1193   dwDetailLevel, dwFlags: DWORD): PDH_STATUS; stdcall;
1194 {$EXTERNALSYM PdhEnumObjectItemsH}
1195 
PdhExpandWildCardPathHAnull1196 function PdhExpandWildCardPathHA(hDataSource: PDH_HLOG; szWildCardPath: LPCSTR; mszExpandedPathList: LPSTR;
1197   pcchPathListLength: LPDWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
1198 {$EXTERNALSYM PdhExpandWildCardPathHA}
PdhExpandWildCardPathHWnull1199 function PdhExpandWildCardPathHW(hDataSource: PDH_HLOG; szWildCardPath: LPCWSTR; mszExpandedPathList: LPWSTR;
1200   pcchPathListLength: LPDWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
1201 {$EXTERNALSYM PdhExpandWildCardPathHW}
PdhExpandWildCardPathHnull1202 function PdhExpandWildCardPathH(hDataSource: PDH_HLOG; szWildCardPath: LPCTSTR; mszExpandedPathList: LPTSTR;
1203   pcchPathListLength: LPDWORD; dwFlags: DWORD): PDH_STATUS; stdcall;
1204 {$EXTERNALSYM PdhExpandWildCardPathH}
1205 
PdhGetDataSourceTimeRangeHnull1206 function PdhGetDataSourceTimeRangeH(hDataSource: PDH_HLOG; pdwNumEntries: LPDWORD; pInfo: PPDH_TIME_INFO;
1207   pdwBufferSize: LPDWORD): PDH_STATUS; stdcall;
1208 {$EXTERNALSYM PdhGetDataSourceTimeRangeH}
1209 
PdhGetDefaultPerfObjectHWnull1210 function PdhGetDefaultPerfObjectHW(hDataSource: PDH_HLOG; szMachineName: LPCWSTR; szDefaultObjectName: LPWSTR;
1211   pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1212 {$EXTERNALSYM PdhGetDefaultPerfObjectHW}
PdhGetDefaultPerfObjectHAnull1213 function PdhGetDefaultPerfObjectHA(hDataSource: PDH_HLOG; szMachineName: LPCSTR; szDefaultObjectName: LPSTR;
1214   pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1215 {$EXTERNALSYM PdhGetDefaultPerfObjectHA}
PdhGetDefaultPerfObjectHnull1216 function PdhGetDefaultPerfObjectH(hDataSource: PDH_HLOG; szMachineName: LPCTSTR; szDefaultObjectName: LPTSTR;
1217   pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1218 {$EXTERNALSYM PdhGetDefaultPerfObjectH}
1219 
PdhGetDefaultPerfCounterHWnull1220 function PdhGetDefaultPerfCounterHW(hDataSource: PDH_HLOG; szMachineName, szObjectName: LPCWSTR;
1221   szDefaultCounterName: LPWSTR; pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1222 {$EXTERNALSYM PdhGetDefaultPerfCounterHW}
PdhGetDefaultPerfCounterHAnull1223 function PdhGetDefaultPerfCounterHA(hDataSource: PDH_HLOG; szMachineName, szObjectName: LPCSTR;
1224   szDefaultCounterName: LPSTR; pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1225 {$EXTERNALSYM PdhGetDefaultPerfCounterHA}
PdhGetDefaultPerfCounterHnull1226 function PdhGetDefaultPerfCounterH(hDataSource: PDH_HLOG; szMachineName, szObjectName: LPCTSTR;
1227   szDefaultCounterName: LPTSTR; pcchBufferSize: LPDWORD): PDH_STATUS; stdcall;
1228 {$EXTERNALSYM PdhGetDefaultPerfCounterH}
1229 
PdhBrowseCountersHWnull1230 function PdhBrowseCountersHW(const pBrowseDlgData: PDH_BROWSE_DLG_CONFIG_HW): PDH_STATUS; stdcall;
1231 {$EXTERNALSYM PdhBrowseCountersHW}
PdhBrowseCountersHAnull1232 function PdhBrowseCountersHA(const pBrowseDlgData: PDH_BROWSE_DLG_CONFIG_HA): PDH_STATUS; stdcall;
1233 {$EXTERNALSYM PdhBrowseCountersHA}
PdhBrowseCountersHnull1234 function PdhBrowseCountersH(const pBrowseDlgData: PDH_BROWSE_DLG_CONFIG_H): PDH_STATUS; stdcall;
1235 {$EXTERNALSYM PdhBrowseCountersH}
1236 
1237 //Check that a DSN points to a database that contains the correct Perfmon tables.
1238 
PdhVerifySQLDBWnull1239 function PdhVerifySQLDBW(szDataSource: LPCWSTR): PDH_STATUS; stdcall;
1240 {$EXTERNALSYM PdhVerifySQLDBW}
PdhVerifySQLDBAnull1241 function PdhVerifySQLDBA(szDataSource: LPCSTR): PDH_STATUS; stdcall;
1242 {$EXTERNALSYM PdhVerifySQLDBA}
PdhVerifySQLDBnull1243 function PdhVerifySQLDB(szDataSource: LPCTSTR): PDH_STATUS; stdcall;
1244 {$EXTERNALSYM PdhVerifySQLDB}
1245 
1246 //Create the correct perfmon tables in the database pointed to by a DSN.
1247 
PdhCreateSQLTablesWnull1248 function PdhCreateSQLTablesW(szDataSource: LPCWSTR): PDH_STATUS; stdcall;
1249 {$EXTERNALSYM PdhCreateSQLTablesW}
PdhCreateSQLTablesAnull1250 function PdhCreateSQLTablesA(szDataSource: LPCSTR): PDH_STATUS; stdcall;
1251 {$EXTERNALSYM PdhCreateSQLTablesA}
PdhCreateSQLTablesnull1252 function PdhCreateSQLTables(szDataSource: LPCTSTR): PDH_STATUS; stdcall;
1253 {$EXTERNALSYM PdhCreateSQLTables}
1254 
1255 //Return the list of Log set names in the database pointed to by the DSN.
1256 
PdhEnumLogSetNamesWnull1257 function PdhEnumLogSetNamesW(szDataSource: LPCWSTR; mszDataSetNameList: LPWSTR; pcchBufferLength: LPDWORD): PDH_STATUS; stdcall;
1258 {$EXTERNALSYM PdhEnumLogSetNamesW}
PdhEnumLogSetNamesAnull1259 function PdhEnumLogSetNamesA(szDataSource: LPCSTR; mszDataSetNameList: LPSTR; pcchBufferLength: LPDWORD): PDH_STATUS; stdcall;
1260 {$EXTERNALSYM PdhEnumLogSetNamesA}
PdhEnumLogSetNamesnull1261 function PdhEnumLogSetNames(szDataSource: LPCTSTR; mszDataSetNameList: LPTSTR; pcchBufferLength: LPDWORD): PDH_STATUS; stdcall;
1262 {$EXTERNALSYM PdhEnumLogSetNames}
1263 
1264 //Retrieve the GUID for an open Log Set
1265 
PdhGetLogSetGUIDnull1266 function PdhGetLogSetGUID(hLog: PDH_HLOG; pGuid: LPGUID; pRunId: LPINT): PDH_STATUS; stdcall;
1267 {$EXTERNALSYM PdhGetLogSetGUID}
1268 
1269 //Set the RunID for an open Log Set
1270 
PdhSetLogSetRunIDnull1271 function PdhSetLogSetRunID(hLog: PDH_HLOG; RunId: Integer): PDH_STATUS; stdcall;
1272 {$EXTERNALSYM PdhSetLogSetRunID}
1273 
1274 {$ENDIF JWA_IMPLEMENTATIONSECTION}
1275 
1276 {$IFNDEF JWA_OMIT_SECTIONS}
1277 implementation
1278 //uses ...
1279 {$ENDIF JWA_OMIT_SECTIONS}
1280 
1281 {$IFNDEF JWA_INTERFACESECTION}
1282 
1283 {$IFNDEF JWA_INCLUDEMODE}
1284 const
1285   PdhLib = 'pdh.dll';
1286   {$IFDEF UNICODE}
1287   AWSuffix = 'W';
1288   {$ELSE}
1289   AWSuffix = 'A';
1290   {$ENDIF UNICODE}
1291 {$ENDIF JWA_INCLUDEMODE}
1292 
IsSuccessSeveritynull1293 function IsSuccessSeverity(ErrorCode: Longint): Boolean;
1294 begin
1295   Result := (ErrorCode and $C0000000) = $00000000;
1296 end;
1297 
IsInformationalSeveritynull1298 function IsInformationalSeverity(ErrorCode: Longint): Boolean;
1299 begin
1300   Result := (ErrorCode and $C0000000) = $40000000;
1301 end;
1302 
IsWarningSeveritynull1303 function IsWarningSeverity(ErrorCode: Longint): Boolean;
1304 begin
1305   Result := (ErrorCode and $C0000000) = $80000000;
1306 end;
1307 
IsErrorSeveritynull1308 function IsErrorSeverity(ErrorCode: Longint): Boolean;
1309 begin
1310   Result := (ErrorCode and $C0000000) = $C0000000;
1311 end;
1312 
PDH_PATH_LANG_FLAGSnull1313 function PDH_PATH_LANG_FLAGS(LangId, Flags: DWORD): DWORD;
1314 begin
1315   Result := DWORD(((LangId and $0000FFFF) shl 16) or (Flags and $0000FFFF));
1316 end;
1317 
1318 {$IFDEF DYNAMIC_LINK}
1319 
1320 var
1321   _PdhGetDllVersion: Pointer;
1322 
PdhGetDllVersionnull1323 function PdhGetDllVersion;
1324 begin
1325   GetProcedureAddress(_PdhGetDllVersion, PdhLib, 'PdhGetDllVersion');
1326   asm
1327         MOV     ESP, EBP
1328         POP     EBP
1329         JMP     [_PdhGetDllVersion]
1330   end;
1331 end;
1332 
1333 var
1334   _PdhOpenQueryA: Pointer;
1335 
PdhOpenQueryAnull1336 function PdhOpenQueryA;
1337 begin
1338   GetProcedureAddress(_PdhOpenQueryA, PdhLib, 'PdhOpenQueryA');
1339   asm
1340         MOV     ESP, EBP
1341         POP     EBP
1342         JMP     [_PdhOpenQueryA]
1343   end;
1344 end;
1345 
1346 var
1347   _PdhOpenQueryW: Pointer;
1348 
PdhOpenQueryWnull1349 function PdhOpenQueryW;
1350 begin
1351   GetProcedureAddress(_PdhOpenQueryW, PdhLib, 'PdhOpenQueryW');
1352   asm
1353         MOV     ESP, EBP
1354         POP     EBP
1355         JMP     [_PdhOpenQueryW]
1356   end;
1357 end;
1358 
1359 var
1360   _PdhOpenQuery: Pointer;
1361 
PdhOpenQuerynull1362 function PdhOpenQuery;
1363 begin
1364   GetProcedureAddress(_PdhOpenQuery, PdhLib, 'PdhOpenQuery' + AWSuffix);
1365   asm
1366         MOV     ESP, EBP
1367         POP     EBP
1368         JMP     [_PdhOpenQuery]
1369   end;
1370 end;
1371 
1372 var
1373   _PdhAddCounterA: Pointer;
1374 
PdhAddCounterAnull1375 function PdhAddCounterA;
1376 begin
1377   GetProcedureAddress(_PdhAddCounterA, PdhLib, 'PdhAddCounterA');
1378   asm
1379         MOV     ESP, EBP
1380         POP     EBP
1381         JMP     [_PdhAddCounterA]
1382   end;
1383 end;
1384 
1385 var
1386   _PdhAddCounterW: Pointer;
1387 
PdhAddCounterWnull1388 function PdhAddCounterW;
1389 begin
1390   GetProcedureAddress(_PdhAddCounterW, PdhLib, 'PdhAddCounterW');
1391   asm
1392         MOV     ESP, EBP
1393         POP     EBP
1394         JMP     [_PdhAddCounterW]
1395   end;
1396 end;
1397 
1398 var
1399   _PdhAddCounter: Pointer;
1400 
PdhAddCounternull1401 function PdhAddCounter;
1402 begin
1403   GetProcedureAddress(_PdhAddCounter, PdhLib, 'PdhAddCounter' + AWSuffix);
1404   asm
1405         MOV     ESP, EBP
1406         POP     EBP
1407         JMP     [_PdhAddCounter]
1408   end;
1409 end;
1410 
1411 var
1412   _PdhRemoveCounter: Pointer;
1413 
PdhRemoveCounternull1414 function PdhRemoveCounter;
1415 begin
1416   GetProcedureAddress(_PdhRemoveCounter, PdhLib, 'PdhRemoveCounter');
1417   asm
1418         MOV     ESP, EBP
1419         POP     EBP
1420         JMP     [_PdhRemoveCounter]
1421   end;
1422 end;
1423 
1424 var
1425   _PdhCollectQueryData: Pointer;
1426 
PdhCollectQueryDatanull1427 function PdhCollectQueryData;
1428 begin
1429   GetProcedureAddress(_PdhCollectQueryData, PdhLib, 'PdhCollectQueryData');
1430   asm
1431         MOV     ESP, EBP
1432         POP     EBP
1433         JMP     [_PdhCollectQueryData]
1434   end;
1435 end;
1436 
1437 var
1438   _PdhCloseQuery: Pointer;
1439 
PdhCloseQuerynull1440 function PdhCloseQuery;
1441 begin
1442   GetProcedureAddress(_PdhCloseQuery, PdhLib, 'PdhCloseQuery');
1443   asm
1444         MOV     ESP, EBP
1445         POP     EBP
1446         JMP     [_PdhCloseQuery]
1447   end;
1448 end;
1449 
1450 var
1451   _PdhGetFormattedCounterValue: Pointer;
1452 
PdhGetFormattedCounterValuenull1453 function PdhGetFormattedCounterValue;
1454 begin
1455   GetProcedureAddress(_PdhGetFormattedCounterValue, PdhLib, 'PdhGetFormattedCounterValue');
1456   asm
1457         MOV     ESP, EBP
1458         POP     EBP
1459         JMP     [_PdhGetFormattedCounterValue]
1460   end;
1461 end;
1462 
1463 var
1464   _PdhGetFormattedCounterArrayA: Pointer;
1465 
PdhGetFormattedCounterArrayAnull1466 function PdhGetFormattedCounterArrayA;
1467 begin
1468   GetProcedureAddress(_PdhGetFormattedCounterArrayA, PdhLib, 'PdhGetFormattedCounterArrayA');
1469   asm
1470         MOV     ESP, EBP
1471         POP     EBP
1472         JMP     [_PdhGetFormattedCounterArrayA]
1473   end;
1474 end;
1475 
1476 var
1477   _PdhGetFormattedCounterArrayW: Pointer;
1478 
PdhGetFormattedCounterArrayWnull1479 function PdhGetFormattedCounterArrayW;
1480 begin
1481   GetProcedureAddress(_PdhGetFormattedCounterArrayW, PdhLib, 'PdhGetFormattedCounterArrayW');
1482   asm
1483         MOV     ESP, EBP
1484         POP     EBP
1485         JMP     [_PdhGetFormattedCounterArrayW]
1486   end;
1487 end;
1488 
1489 var
1490   _PdhGetFormattedCounterArray: Pointer;
1491 
PdhGetFormattedCounterArraynull1492 function PdhGetFormattedCounterArray;
1493 begin
1494   GetProcedureAddress(_PdhGetFormattedCounterArray, PdhLib, 'PdhGetFormattedCounterArray' + AWSuffix);
1495   asm
1496         MOV     ESP, EBP
1497         POP     EBP
1498         JMP     [_PdhGetFormattedCounterArray]
1499   end;
1500 end;
1501 
1502 var
1503   _PdhGetRawCounterValue: Pointer;
1504 
PdhGetRawCounterValuenull1505 function PdhGetRawCounterValue;
1506 begin
1507   GetProcedureAddress(_PdhGetRawCounterValue, PdhLib, 'PdhGetRawCounterValue');
1508   asm
1509         MOV     ESP, EBP
1510         POP     EBP
1511         JMP     [_PdhGetRawCounterValue]
1512   end;
1513 end;
1514 
1515 var
1516   _PdhGetRawCounterArrayA: Pointer;
1517 
PdhGetRawCounterArrayAnull1518 function PdhGetRawCounterArrayA;
1519 begin
1520   GetProcedureAddress(_PdhGetRawCounterArrayA, PdhLib, 'PdhGetRawCounterArrayA');
1521   asm
1522         MOV     ESP, EBP
1523         POP     EBP
1524         JMP     [_PdhGetRawCounterArrayA]
1525   end;
1526 end;
1527 
1528 var
1529   _PdhGetRawCounterArrayW: Pointer;
1530 
PdhGetRawCounterArrayWnull1531 function PdhGetRawCounterArrayW;
1532 begin
1533   GetProcedureAddress(_PdhGetRawCounterArrayW, PdhLib, 'PdhGetRawCounterArrayW');
1534   asm
1535         MOV     ESP, EBP
1536         POP     EBP
1537         JMP     [_PdhGetRawCounterArrayW]
1538   end;
1539 end;
1540 
1541 var
1542   _PdhGetRawCounterArray: Pointer;
1543 
PdhGetRawCounterArraynull1544 function PdhGetRawCounterArray;
1545 begin
1546   GetProcedureAddress(_PdhGetRawCounterArray, PdhLib, 'PdhGetRawCounterArray' + AWSuffix);
1547   asm
1548         MOV     ESP, EBP
1549         POP     EBP
1550         JMP     [_PdhGetRawCounterArray]
1551   end;
1552 end;
1553 
1554 var
1555   _PdhCalculateCounterFromRawValue: Pointer;
1556 
PdhCalculateCounterFromRawValuenull1557 function PdhCalculateCounterFromRawValue;
1558 begin
1559   GetProcedureAddress(_PdhCalculateCounterFromRawValue, PdhLib, 'PdhCalculateCounterFromRawValue');
1560   asm
1561         MOV     ESP, EBP
1562         POP     EBP
1563         JMP     [_PdhCalculateCounterFromRawValue]
1564   end;
1565 end;
1566 
1567 var
1568   _PdhComputeCounterStatistics: Pointer;
1569 
PdhComputeCounterStatisticsnull1570 function PdhComputeCounterStatistics;
1571 begin
1572   GetProcedureAddress(_PdhComputeCounterStatistics, PdhLib, 'PdhComputeCounterStatistics');
1573   asm
1574         MOV     ESP, EBP
1575         POP     EBP
1576         JMP     [_PdhComputeCounterStatistics]
1577   end;
1578 end;
1579 
1580 var
1581   _PdhGetCounterInfoA: Pointer;
1582 
PdhGetCounterInfoAnull1583 function PdhGetCounterInfoA;
1584 begin
1585   GetProcedureAddress(_PdhGetCounterInfoA, PdhLib, 'PdhGetCounterInfoA');
1586   asm
1587         MOV     ESP, EBP
1588         POP     EBP
1589         JMP     [_PdhGetCounterInfoA]
1590   end;
1591 end;
1592 
1593 var
1594   _PdhGetCounterInfoW: Pointer;
1595 
PdhGetCounterInfoWnull1596 function PdhGetCounterInfoW;
1597 begin
1598   GetProcedureAddress(_PdhGetCounterInfoW, PdhLib, 'PdhGetCounterInfoW');
1599   asm
1600         MOV     ESP, EBP
1601         POP     EBP
1602         JMP     [_PdhGetCounterInfoW]
1603   end;
1604 end;
1605 
1606 var
1607   _PdhGetCounterInfo: Pointer;
1608 
PdhGetCounterInfonull1609 function PdhGetCounterInfo;
1610 begin
1611   GetProcedureAddress(_PdhGetCounterInfo, PdhLib, 'PdhGetCounterInfo' + AWSuffix);
1612   asm
1613         MOV     ESP, EBP
1614         POP     EBP
1615         JMP     [_PdhGetCounterInfo]
1616   end;
1617 end;
1618 
1619 var
1620   _PdhSetCounterScaleFactor: Pointer;
1621 
PdhSetCounterScaleFactornull1622 function PdhSetCounterScaleFactor;
1623 begin
1624   GetProcedureAddress(_PdhSetCounterScaleFactor, PdhLib, 'PdhSetCounterScaleFactor');
1625   asm
1626         MOV     ESP, EBP
1627         POP     EBP
1628         JMP     [_PdhSetCounterScaleFactor]
1629   end;
1630 end;
1631 
1632 var
1633   _PdhConnectMachineA: Pointer;
1634 
PdhConnectMachineAnull1635 function PdhConnectMachineA;
1636 begin
1637   GetProcedureAddress(_PdhConnectMachineA, PdhLib, 'PdhConnectMachineA');
1638   asm
1639         MOV     ESP, EBP
1640         POP     EBP
1641         JMP     [_PdhConnectMachineA]
1642   end;
1643 end;
1644 
1645 var
1646   _PdhConnectMachineW: Pointer;
1647 
PdhConnectMachineWnull1648 function PdhConnectMachineW;
1649 begin
1650   GetProcedureAddress(_PdhConnectMachineW, PdhLib, 'PdhConnectMachineW');
1651   asm
1652         MOV     ESP, EBP
1653         POP     EBP
1654         JMP     [_PdhConnectMachineW]
1655   end;
1656 end;
1657 
1658 var
1659   _PdhConnectMachine: Pointer;
1660 
PdhConnectMachinenull1661 function PdhConnectMachine;
1662 begin
1663   GetProcedureAddress(_PdhConnectMachine, PdhLib, 'PdhConnectMachine' + AWSuffix);
1664   asm
1665         MOV     ESP, EBP
1666         POP     EBP
1667         JMP     [_PdhConnectMachine]
1668   end;
1669 end;
1670 
1671 var
1672   _PdhEnumMachinesA: Pointer;
1673 
PdhEnumMachinesAnull1674 function PdhEnumMachinesA;
1675 begin
1676   GetProcedureAddress(_PdhEnumMachinesA, PdhLib, 'PdhEnumMachinesA');
1677   asm
1678         MOV     ESP, EBP
1679         POP     EBP
1680         JMP     [_PdhEnumMachinesA]
1681   end;
1682 end;
1683 
1684 var
1685   _PdhEnumMachinesW: Pointer;
1686 
PdhEnumMachinesWnull1687 function PdhEnumMachinesW;
1688 begin
1689   GetProcedureAddress(_PdhEnumMachinesW, PdhLib, 'PdhEnumMachinesW');
1690   asm
1691         MOV     ESP, EBP
1692         POP     EBP
1693         JMP     [_PdhEnumMachinesW]
1694   end;
1695 end;
1696 
1697 var
1698   _PdhEnumMachines: Pointer;
1699 
PdhEnumMachinesnull1700 function PdhEnumMachines;
1701 begin
1702   GetProcedureAddress(_PdhEnumMachines, PdhLib, 'PdhEnumMachines' + AWSuffix);
1703   asm
1704         MOV     ESP, EBP
1705         POP     EBP
1706         JMP     [_PdhEnumMachines]
1707   end;
1708 end;
1709 
1710 var
1711   _PdhEnumObjectsA: Pointer;
1712 
PdhEnumObjectsAnull1713 function PdhEnumObjectsA;
1714 begin
1715   GetProcedureAddress(_PdhEnumObjectsA, PdhLib, 'PdhEnumObjectsA');
1716   asm
1717         MOV     ESP, EBP
1718         POP     EBP
1719         JMP     [_PdhEnumObjectsA]
1720   end;
1721 end;
1722 
1723 var
1724   _PdhEnumObjectsW: Pointer;
1725 
PdhEnumObjectsWnull1726 function PdhEnumObjectsW;
1727 begin
1728   GetProcedureAddress(_PdhEnumObjectsW, PdhLib, 'PdhEnumObjectsW');
1729   asm
1730         MOV     ESP, EBP
1731         POP     EBP
1732         JMP     [_PdhEnumObjectsW]
1733   end;
1734 end;
1735 
1736 var
1737   _PdhEnumObjects: Pointer;
1738 
PdhEnumObjectsnull1739 function PdhEnumObjects;
1740 begin
1741   GetProcedureAddress(_PdhEnumObjects, PdhLib, 'PdhEnumObjects' + AWSuffix);
1742   asm
1743         MOV     ESP, EBP
1744         POP     EBP
1745         JMP     [_PdhEnumObjects]
1746   end;
1747 end;
1748 
1749 var
1750   _PdhEnumObjectItemsA: Pointer;
1751 
PdhEnumObjectItemsAnull1752 function PdhEnumObjectItemsA;
1753 begin
1754   GetProcedureAddress(_PdhEnumObjectItemsA, PdhLib, 'PdhEnumObjectItemsA');
1755   asm
1756         MOV     ESP, EBP
1757         POP     EBP
1758         JMP     [_PdhEnumObjectItemsA]
1759   end;
1760 end;
1761 
1762 var
1763   _PdhEnumObjectItemsW: Pointer;
1764 
PdhEnumObjectItemsWnull1765 function PdhEnumObjectItemsW;
1766 begin
1767   GetProcedureAddress(_PdhEnumObjectItemsW, PdhLib, 'PdhEnumObjectItemsW');
1768   asm
1769         MOV     ESP, EBP
1770         POP     EBP
1771         JMP     [_PdhEnumObjectItemsW]
1772   end;
1773 end;
1774 
1775 var
1776   _PdhEnumObjectItems: Pointer;
1777 
PdhEnumObjectItemsnull1778 function PdhEnumObjectItems;
1779 begin
1780   GetProcedureAddress(_PdhEnumObjectItems, PdhLib, 'PdhEnumObjectItems' + AWSuffix);
1781   asm
1782         MOV     ESP, EBP
1783         POP     EBP
1784         JMP     [_PdhEnumObjectItems]
1785   end;
1786 end;
1787 
1788 var
1789   _PdhMakeCounterPathA: Pointer;
1790 
PdhMakeCounterPathAnull1791 function PdhMakeCounterPathA;
1792 begin
1793   GetProcedureAddress(_PdhMakeCounterPathA, PdhLib, 'PdhMakeCounterPathA');
1794   asm
1795         MOV     ESP, EBP
1796         POP     EBP
1797         JMP     [_PdhMakeCounterPathA]
1798   end;
1799 end;
1800 
1801 var
1802   _PdhMakeCounterPathW: Pointer;
1803 
PdhMakeCounterPathWnull1804 function PdhMakeCounterPathW;
1805 begin
1806   GetProcedureAddress(_PdhMakeCounterPathW, PdhLib, 'PdhMakeCounterPathW');
1807   asm
1808         MOV     ESP, EBP
1809         POP     EBP
1810         JMP     [_PdhMakeCounterPathW]
1811   end;
1812 end;
1813 
1814 var
1815   _PdhMakeCounterPath: Pointer;
1816 
PdhMakeCounterPathnull1817 function PdhMakeCounterPath;
1818 begin
1819   GetProcedureAddress(_PdhMakeCounterPath, PdhLib, 'PdhMakeCounterPath' + AWSuffix);
1820   asm
1821         MOV     ESP, EBP
1822         POP     EBP
1823         JMP     [_PdhMakeCounterPath]
1824   end;
1825 end;
1826 
1827 var
1828   _PdhParseCounterPathA: Pointer;
1829 
PdhParseCounterPathAnull1830 function PdhParseCounterPathA;
1831 begin
1832   GetProcedureAddress(_PdhParseCounterPathA, PdhLib, 'PdhParseCounterPathA');
1833   asm
1834         MOV     ESP, EBP
1835         POP     EBP
1836         JMP     [_PdhParseCounterPathA]
1837   end;
1838 end;
1839 
1840 var
1841   _PdhParseCounterPathW: Pointer;
1842 
PdhParseCounterPathWnull1843 function PdhParseCounterPathW;
1844 begin
1845   GetProcedureAddress(_PdhParseCounterPathW, PdhLib, 'PdhParseCounterPathW');
1846   asm
1847         MOV     ESP, EBP
1848         POP     EBP
1849         JMP     [_PdhParseCounterPathW]
1850   end;
1851 end;
1852 
1853 var
1854   _PdhParseCounterPath: Pointer;
1855 
PdhParseCounterPathnull1856 function PdhParseCounterPath;
1857 begin
1858   GetProcedureAddress(_PdhParseCounterPath, PdhLib, 'PdhParseCounterPath' + AWSuffix);
1859   asm
1860         MOV     ESP, EBP
1861         POP     EBP
1862         JMP     [_PdhParseCounterPath]
1863   end;
1864 end;
1865 
1866 var
1867   _PdhParseInstanceNameA: Pointer;
1868 
PdhParseInstanceNameAnull1869 function PdhParseInstanceNameA;
1870 begin
1871   GetProcedureAddress(_PdhParseInstanceNameA, PdhLib, 'PdhParseInstanceNameA');
1872   asm
1873         MOV     ESP, EBP
1874         POP     EBP
1875         JMP     [_PdhParseInstanceNameA]
1876   end;
1877 end;
1878 
1879 var
1880   _PdhParseInstanceNameW: Pointer;
1881 
PdhParseInstanceNameWnull1882 function PdhParseInstanceNameW;
1883 begin
1884   GetProcedureAddress(_PdhParseInstanceNameW, PdhLib, 'PdhParseInstanceNameW');
1885   asm
1886         MOV     ESP, EBP
1887         POP     EBP
1888         JMP     [_PdhParseInstanceNameW]
1889   end;
1890 end;
1891 
1892 var
1893   _PdhParseInstanceName: Pointer;
1894 
PdhParseInstanceNamenull1895 function PdhParseInstanceName;
1896 begin
1897   GetProcedureAddress(_PdhParseInstanceName, PdhLib, 'PdhParseInstanceName' + AWSuffix);
1898   asm
1899         MOV     ESP, EBP
1900         POP     EBP
1901         JMP     [_PdhParseInstanceName]
1902   end;
1903 end;
1904 
1905 var
1906   _PdhValidatePathA: Pointer;
1907 
PdhValidatePathAnull1908 function PdhValidatePathA;
1909 begin
1910   GetProcedureAddress(_PdhValidatePathA, PdhLib, 'PdhValidatePathA');
1911   asm
1912         MOV     ESP, EBP
1913         POP     EBP
1914         JMP     [_PdhValidatePathA]
1915   end;
1916 end;
1917 
1918 var
1919   _PdhValidatePathW: Pointer;
1920 
PdhValidatePathWnull1921 function PdhValidatePathW;
1922 begin
1923   GetProcedureAddress(_PdhValidatePathW, PdhLib, 'PdhValidatePathW');
1924   asm
1925         MOV     ESP, EBP
1926         POP     EBP
1927         JMP     [_PdhValidatePathW]
1928   end;
1929 end;
1930 
1931 var
1932   _PdhValidatePath: Pointer;
1933 
PdhValidatePathnull1934 function PdhValidatePath;
1935 begin
1936   GetProcedureAddress(_PdhValidatePath, PdhLib, 'PdhValidatePath' + AWSuffix);
1937   asm
1938         MOV     ESP, EBP
1939         POP     EBP
1940         JMP     [_PdhValidatePath]
1941   end;
1942 end;
1943 
1944 var
1945   _PdhGetDefaultPerfObjectA: Pointer;
1946 
PdhGetDefaultPerfObjectAnull1947 function PdhGetDefaultPerfObjectA;
1948 begin
1949   GetProcedureAddress(_PdhGetDefaultPerfObjectA, PdhLib, 'PdhGetDefaultPerfObjectA');
1950   asm
1951         MOV     ESP, EBP
1952         POP     EBP
1953         JMP     [_PdhGetDefaultPerfObjectA]
1954   end;
1955 end;
1956 
1957 var
1958   _PdhGetDefaultPerfObjectW: Pointer;
1959 
PdhGetDefaultPerfObjectWnull1960 function PdhGetDefaultPerfObjectW;
1961 begin
1962   GetProcedureAddress(_PdhGetDefaultPerfObjectW, PdhLib, 'PdhGetDefaultPerfObjectW');
1963   asm
1964         MOV     ESP, EBP
1965         POP     EBP
1966         JMP     [_PdhGetDefaultPerfObjectW]
1967   end;
1968 end;
1969 
1970 var
1971   _PdhGetDefaultPerfObject: Pointer;
1972 
PdhGetDefaultPerfObjectnull1973 function PdhGetDefaultPerfObject;
1974 begin
1975   GetProcedureAddress(_PdhGetDefaultPerfObject, PdhLib, 'PdhGetDefaultPerfObject' + AWSuffix);
1976   asm
1977         MOV     ESP, EBP
1978         POP     EBP
1979         JMP     [_PdhGetDefaultPerfObject]
1980   end;
1981 end;
1982 
1983 var
1984   _PdhGetDefaultPerfCounterA: Pointer;
1985 
PdhGetDefaultPerfCounterAnull1986 function PdhGetDefaultPerfCounterA;
1987 begin
1988   GetProcedureAddress(_PdhGetDefaultPerfCounterA, PdhLib, 'PdhGetDefaultPerfCounterA');
1989   asm
1990         MOV     ESP, EBP
1991         POP     EBP
1992         JMP     [_PdhGetDefaultPerfCounterA]
1993   end;
1994 end;
1995 
1996 var
1997   _PdhGetDefaultPerfCounterW: Pointer;
1998 
PdhGetDefaultPerfCounterWnull1999 function PdhGetDefaultPerfCounterW;
2000 begin
2001   GetProcedureAddress(_PdhGetDefaultPerfCounterW, PdhLib, 'PdhGetDefaultPerfCounterW');
2002   asm
2003         MOV     ESP, EBP
2004         POP     EBP
2005         JMP     [_PdhGetDefaultPerfCounterW]
2006   end;
2007 end;
2008 
2009 var
2010   _PdhGetDefaultPerfCounter: Pointer;
2011 
PdhGetDefaultPerfCounternull2012 function PdhGetDefaultPerfCounter;
2013 begin
2014   GetProcedureAddress(_PdhGetDefaultPerfCounter, PdhLib, 'PdhGetDefaultPerfCounter' + AWSuffix);
2015   asm
2016         MOV     ESP, EBP
2017         POP     EBP
2018         JMP     [_PdhGetDefaultPerfCounter]
2019   end;
2020 end;
2021 
2022 var
2023   _PdhBrowseCountersA: Pointer;
2024 
PdhBrowseCountersAnull2025 function PdhBrowseCountersA;
2026 begin
2027   GetProcedureAddress(_PdhBrowseCountersA, PdhLib, 'PdhBrowseCountersA');
2028   asm
2029         MOV     ESP, EBP
2030         POP     EBP
2031         JMP     [_PdhBrowseCountersA]
2032   end;
2033 end;
2034 
2035 var
2036   _PdhBrowseCountersW: Pointer;
2037 
PdhBrowseCountersWnull2038 function PdhBrowseCountersW;
2039 begin
2040   GetProcedureAddress(_PdhBrowseCountersW, PdhLib, 'PdhBrowseCountersW');
2041   asm
2042         MOV     ESP, EBP
2043         POP     EBP
2044         JMP     [_PdhBrowseCountersW]
2045   end;
2046 end;
2047 
2048 var
2049   _PdhBrowseCounters: Pointer;
2050 
PdhBrowseCountersnull2051 function PdhBrowseCounters;
2052 begin
2053   GetProcedureAddress(_PdhBrowseCounters, PdhLib, 'PdhBrowseCounters' + AWSuffix);
2054   asm
2055         MOV     ESP, EBP
2056         POP     EBP
2057         JMP     [_PdhBrowseCounters]
2058   end;
2059 end;
2060 
2061 var
2062   _PdhExpandCounterPathA: Pointer;
2063 
PdhExpandCounterPathAnull2064 function PdhExpandCounterPathA;
2065 begin
2066   GetProcedureAddress(_PdhExpandCounterPathA, PdhLib, 'PdhExpandCounterPathA');
2067   asm
2068         MOV     ESP, EBP
2069         POP     EBP
2070         JMP     [_PdhExpandCounterPathA]
2071   end;
2072 end;
2073 
2074 var
2075   _PdhExpandCounterPathW: Pointer;
2076 
PdhExpandCounterPathWnull2077 function PdhExpandCounterPathW;
2078 begin
2079   GetProcedureAddress(_PdhExpandCounterPathW, PdhLib, 'PdhExpandCounterPathW');
2080   asm
2081         MOV     ESP, EBP
2082         POP     EBP
2083         JMP     [_PdhExpandCounterPathW]
2084   end;
2085 end;
2086 
2087 var
2088   _PdhExpandCounterPath: Pointer;
2089 
PdhExpandCounterPathnull2090 function PdhExpandCounterPath;
2091 begin
2092   GetProcedureAddress(_PdhExpandCounterPath, PdhLib, 'PdhExpandCounterPath' + AWSuffix);
2093   asm
2094         MOV     ESP, EBP
2095         POP     EBP
2096         JMP     [_PdhExpandCounterPath]
2097   end;
2098 end;
2099 
2100 var
2101   _PdhLookupPerfNameByIndexA: Pointer;
2102 
PdhLookupPerfNameByIndexAnull2103 function PdhLookupPerfNameByIndexA;
2104 begin
2105   GetProcedureAddress(_PdhLookupPerfNameByIndexA, PdhLib, 'PdhLookupPerfNameByIndexA');
2106   asm
2107         MOV     ESP, EBP
2108         POP     EBP
2109         JMP     [_PdhLookupPerfNameByIndexA]
2110   end;
2111 end;
2112 
2113 var
2114   _PdhLookupPerfNameByIndexW: Pointer;
2115 
PdhLookupPerfNameByIndexWnull2116 function PdhLookupPerfNameByIndexW;
2117 begin
2118   GetProcedureAddress(_PdhLookupPerfNameByIndexW, PdhLib, 'PdhLookupPerfNameByIndexW');
2119   asm
2120         MOV     ESP, EBP
2121         POP     EBP
2122         JMP     [_PdhLookupPerfNameByIndexW]
2123   end;
2124 end;
2125 
2126 var
2127   _PdhLookupPerfNameByIndex: Pointer;
2128 
PdhLookupPerfNameByIndexnull2129 function PdhLookupPerfNameByIndex;
2130 begin
2131   GetProcedureAddress(_PdhLookupPerfNameByIndex, PdhLib, 'PdhLookupPerfNameByIndex' + AWSuffix);
2132   asm
2133         MOV     ESP, EBP
2134         POP     EBP
2135         JMP     [_PdhLookupPerfNameByIndex]
2136   end;
2137 end;
2138 
2139 var
2140   _PdhLookupPerfIndexByNameA: Pointer;
2141 
PdhLookupPerfIndexByNameAnull2142 function PdhLookupPerfIndexByNameA;
2143 begin
2144   GetProcedureAddress(_PdhLookupPerfIndexByNameA, PdhLib, 'PdhLookupPerfIndexByNameA');
2145   asm
2146         MOV     ESP, EBP
2147         POP     EBP
2148         JMP     [_PdhLookupPerfIndexByNameA]
2149   end;
2150 end;
2151 
2152 var
2153   _PdhLookupPerfIndexByNameW: Pointer;
2154 
PdhLookupPerfIndexByNameWnull2155 function PdhLookupPerfIndexByNameW;
2156 begin
2157   GetProcedureAddress(_PdhLookupPerfIndexByNameW, PdhLib, 'PdhLookupPerfIndexByNameW');
2158   asm
2159         MOV     ESP, EBP
2160         POP     EBP
2161         JMP     [_PdhLookupPerfIndexByNameW]
2162   end;
2163 end;
2164 
2165 var
2166   _PdhLookupPerfIndexByName: Pointer;
2167 
PdhLookupPerfIndexByNamenull2168 function PdhLookupPerfIndexByName;
2169 begin
2170   GetProcedureAddress(_PdhLookupPerfIndexByName, PdhLib, 'PdhLookupPerfIndexByName' + AWSuffix);
2171   asm
2172         MOV     ESP, EBP
2173         POP     EBP
2174         JMP     [_PdhLookupPerfIndexByName]
2175   end;
2176 end;
2177 
2178 var
2179   _PdhExpandWildCardPathA: Pointer;
2180 
PdhExpandWildCardPathAnull2181 function PdhExpandWildCardPathA;
2182 begin
2183   GetProcedureAddress(_PdhExpandWildCardPathA, PdhLib, 'PdhExpandWildCardPathA');
2184   asm
2185         MOV     ESP, EBP
2186         POP     EBP
2187         JMP     [_PdhExpandWildCardPathA]
2188   end;
2189 end;
2190 
2191 var
2192   _PdhExpandWildCardPathW: Pointer;
2193 
PdhExpandWildCardPathWnull2194 function PdhExpandWildCardPathW;
2195 begin
2196   GetProcedureAddress(_PdhExpandWildCardPathW, PdhLib, 'PdhExpandWildCardPathW');
2197   asm
2198         MOV     ESP, EBP
2199         POP     EBP
2200         JMP     [_PdhExpandWildCardPathW]
2201   end;
2202 end;
2203 
2204 var
2205   _PdhExpandWildCardPath: Pointer;
2206 
PdhExpandWildCardPathnull2207 function PdhExpandWildCardPath;
2208 begin
2209   GetProcedureAddress(_PdhExpandWildCardPath, PdhLib, 'PdhExpandWildCardPath' + AWSuffix);
2210   asm
2211         MOV     ESP, EBP
2212         POP     EBP
2213         JMP     [_PdhExpandWildCardPath]
2214   end;
2215 end;
2216 
2217 var
2218   _PdhOpenLogA: Pointer;
2219 
PdhOpenLogAnull2220 function PdhOpenLogA;
2221 begin
2222   GetProcedureAddress(_PdhOpenLogA, PdhLib, 'PdhOpenLogA');
2223   asm
2224         MOV     ESP, EBP
2225         POP     EBP
2226         JMP     [_PdhOpenLogA]
2227   end;
2228 end;
2229 
2230 var
2231   _PdhOpenLogW: Pointer;
2232 
PdhOpenLogWnull2233 function PdhOpenLogW;
2234 begin
2235   GetProcedureAddress(_PdhOpenLogW, PdhLib, 'PdhOpenLogW');
2236   asm
2237         MOV     ESP, EBP
2238         POP     EBP
2239         JMP     [_PdhOpenLogW]
2240   end;
2241 end;
2242 
2243 var
2244   _PdhOpenLog: Pointer;
2245 
PdhOpenLognull2246 function PdhOpenLog;
2247 begin
2248   GetProcedureAddress(_PdhOpenLog, PdhLib, 'PdhOpenLog' + AWSuffix);
2249   asm
2250         MOV     ESP, EBP
2251         POP     EBP
2252         JMP     [_PdhOpenLog]
2253   end;
2254 end;
2255 
2256 var
2257   _PdhUpdateLogA: Pointer;
2258 
PdhUpdateLogAnull2259 function PdhUpdateLogA;
2260 begin
2261   GetProcedureAddress(_PdhUpdateLogA, PdhLib, 'PdhUpdateLogA');
2262   asm
2263         MOV     ESP, EBP
2264         POP     EBP
2265         JMP     [_PdhUpdateLogA]
2266   end;
2267 end;
2268 
2269 var
2270   _PdhUpdateLogW: Pointer;
2271 
PdhUpdateLogWnull2272 function PdhUpdateLogW;
2273 begin
2274   GetProcedureAddress(_PdhUpdateLogW, PdhLib, 'PdhUpdateLogW');
2275   asm
2276         MOV     ESP, EBP
2277         POP     EBP
2278         JMP     [_PdhUpdateLogW]
2279   end;
2280 end;
2281 
2282 var
2283   _PdhUpdateLog: Pointer;
2284 
PdhUpdateLognull2285 function PdhUpdateLog;
2286 begin
2287   GetProcedureAddress(_PdhUpdateLog, PdhLib, 'PdhUpdateLog' + AWSuffix);
2288   asm
2289         MOV     ESP, EBP
2290         POP     EBP
2291         JMP     [_PdhUpdateLog]
2292   end;
2293 end;
2294 
2295 var
2296   _PdhUpdateLogFileCatalog: Pointer;
2297 
PdhUpdateLogFileCatalognull2298 function PdhUpdateLogFileCatalog;
2299 begin
2300   GetProcedureAddress(_PdhUpdateLogFileCatalog, PdhLib, 'PdhUpdateLogFileCatalog');
2301   asm
2302         MOV     ESP, EBP
2303         POP     EBP
2304         JMP     [_PdhUpdateLogFileCatalog]
2305   end;
2306 end;
2307 
2308 var
2309   _PdhGetLogFileSize: Pointer;
2310 
PdhGetLogFileSizenull2311 function PdhGetLogFileSize;
2312 begin
2313   GetProcedureAddress(_PdhGetLogFileSize, PdhLib, 'PdhGetLogFileSize');
2314   asm
2315         MOV     ESP, EBP
2316         POP     EBP
2317         JMP     [_PdhGetLogFileSize]
2318   end;
2319 end;
2320 
2321 var
2322   _PdhCloseLog: Pointer;
2323 
PdhCloseLognull2324 function PdhCloseLog;
2325 begin
2326   GetProcedureAddress(_PdhCloseLog, PdhLib, 'PdhCloseLog');
2327   asm
2328         MOV     ESP, EBP
2329         POP     EBP
2330         JMP     [_PdhCloseLog]
2331   end;
2332 end;
2333 
2334 var
2335   _PdhSelectDataSourceA: Pointer;
2336 
PdhSelectDataSourceAnull2337 function PdhSelectDataSourceA;
2338 begin
2339   GetProcedureAddress(_PdhSelectDataSourceA, PdhLib, 'PdhSelectDataSourceA');
2340   asm
2341         MOV     ESP, EBP
2342         POP     EBP
2343         JMP     [_PdhSelectDataSourceA]
2344   end;
2345 end;
2346 
2347 var
2348   _PdhSelectDataSourceW: Pointer;
2349 
PdhSelectDataSourceWnull2350 function PdhSelectDataSourceW;
2351 begin
2352   GetProcedureAddress(_PdhSelectDataSourceW, PdhLib, 'PdhSelectDataSourceW');
2353   asm
2354         MOV     ESP, EBP
2355         POP     EBP
2356         JMP     [_PdhSelectDataSourceW]
2357   end;
2358 end;
2359 
2360 var
2361   _PdhSelectDataSource: Pointer;
2362 
PdhSelectDataSourcenull2363 function PdhSelectDataSource;
2364 begin
2365   GetProcedureAddress(_PdhSelectDataSource, PdhLib, 'PdhSelectDataSource' + AWSuffix);
2366   asm
2367         MOV     ESP, EBP
2368         POP     EBP
2369         JMP     [_PdhSelectDataSource]
2370   end;
2371 end;
2372 
2373 var
2374   _PdhIsRealTimeQuery: Pointer;
2375 
PdhIsRealTimeQuerynull2376 function PdhIsRealTimeQuery;
2377 begin
2378   GetProcedureAddress(_PdhIsRealTimeQuery, PdhLib, 'PdhIsRealTimeQuery');
2379   asm
2380         MOV     ESP, EBP
2381         POP     EBP
2382         JMP     [_PdhIsRealTimeQuery]
2383   end;
2384 end;
2385 
2386 var
2387   _PdhSetQueryTimeRange: Pointer;
2388 
PdhSetQueryTimeRangenull2389 function PdhSetQueryTimeRange;
2390 begin
2391   GetProcedureAddress(_PdhSetQueryTimeRange, PdhLib, 'PdhSetQueryTimeRange');
2392   asm
2393         MOV     ESP, EBP
2394         POP     EBP
2395         JMP     [_PdhSetQueryTimeRange]
2396   end;
2397 end;
2398 
2399 var
2400   _PdhGetDataSourceTimeRangeA: Pointer;
2401 
PdhGetDataSourceTimeRangeAnull2402 function PdhGetDataSourceTimeRangeA;
2403 begin
2404   GetProcedureAddress(_PdhGetDataSourceTimeRangeA, PdhLib, 'PdhGetDataSourceTimeRangeA');
2405   asm
2406         MOV     ESP, EBP
2407         POP     EBP
2408         JMP     [_PdhGetDataSourceTimeRangeA]
2409   end;
2410 end;
2411 
2412 var
2413   _PdhGetDataSourceTimeRangeW: Pointer;
2414 
PdhGetDataSourceTimeRangeWnull2415 function PdhGetDataSourceTimeRangeW;
2416 begin
2417   GetProcedureAddress(_PdhGetDataSourceTimeRangeW, PdhLib, 'PdhGetDataSourceTimeRangeW');
2418   asm
2419         MOV     ESP, EBP
2420         POP     EBP
2421         JMP     [_PdhGetDataSourceTimeRangeW]
2422   end;
2423 end;
2424 
2425 var
2426   _PdhGetDataSourceTimeRange: Pointer;
2427 
PdhGetDataSourceTimeRangenull2428 function PdhGetDataSourceTimeRange;
2429 begin
2430   GetProcedureAddress(_PdhGetDataSourceTimeRange, PdhLib, 'PdhGetDataSourceTimeRange' + AWSuffix);
2431   asm
2432         MOV     ESP, EBP
2433         POP     EBP
2434         JMP     [_PdhGetDataSourceTimeRange]
2435   end;
2436 end;
2437 
2438 var
2439   _PdhCollectQueryDataEx: Pointer;
2440 
PdhCollectQueryDataExnull2441 function PdhCollectQueryDataEx;
2442 begin
2443   GetProcedureAddress(_PdhCollectQueryDataEx, PdhLib, 'PdhCollectQueryDataEx');
2444   asm
2445         MOV     ESP, EBP
2446         POP     EBP
2447         JMP     [_PdhCollectQueryDataEx]
2448   end;
2449 end;
2450 
2451 var
2452   _PdhFormatFromRawValue: Pointer;
2453 
PdhFormatFromRawValuenull2454 function PdhFormatFromRawValue;
2455 begin
2456   GetProcedureAddress(_PdhFormatFromRawValue, PdhLib, 'PdhFormatFromRawValue');
2457   asm
2458         MOV     ESP, EBP
2459         POP     EBP
2460         JMP     [_PdhFormatFromRawValue]
2461   end;
2462 end;
2463 
2464 var
2465   _PdhGetCounterTimeBase: Pointer;
2466 
PdhGetCounterTimeBasenull2467 function PdhGetCounterTimeBase;
2468 begin
2469   GetProcedureAddress(_PdhGetCounterTimeBase, PdhLib, 'PdhGetCounterTimeBase');
2470   asm
2471         MOV     ESP, EBP
2472         POP     EBP
2473         JMP     [_PdhGetCounterTimeBase]
2474   end;
2475 end;
2476 
2477 var
2478   _PdhReadRawLogRecord: Pointer;
2479 
PdhReadRawLogRecordnull2480 function PdhReadRawLogRecord;
2481 begin
2482   GetProcedureAddress(_PdhReadRawLogRecord, PdhLib, 'PdhReadRawLogRecord');
2483   asm
2484         MOV     ESP, EBP
2485         POP     EBP
2486         JMP     [_PdhReadRawLogRecord]
2487   end;
2488 end;
2489 
2490 var
2491   _PdhSetDefaultRealTimeDataSource: Pointer;
2492 
PdhSetDefaultRealTimeDataSourcenull2493 function PdhSetDefaultRealTimeDataSource;
2494 begin
2495   GetProcedureAddress(_PdhSetDefaultRealTimeDataSource, PdhLib, 'PdhSetDefaultRealTimeDataSource');
2496   asm
2497         MOV     ESP, EBP
2498         POP     EBP
2499         JMP     [_PdhSetDefaultRealTimeDataSource]
2500   end;
2501 end;
2502 
2503 var
2504   _PdhBindInputDataSourceW: Pointer;
2505 
PdhBindInputDataSourceWnull2506 function PdhBindInputDataSourceW;
2507 begin
2508   GetProcedureAddress(_PdhBindInputDataSourceW, PdhLib, 'PdhBindInputDataSourceW');
2509   asm
2510         MOV     ESP, EBP
2511         POP     EBP
2512         JMP     [_PdhBindInputDataSourceW]
2513   end;
2514 end;
2515 
2516 var
2517   _PdhBindInputDataSourceA: Pointer;
2518 
PdhBindInputDataSourceAnull2519 function PdhBindInputDataSourceA;
2520 begin
2521   GetProcedureAddress(_PdhBindInputDataSourceA, PdhLib, 'PdhBindInputDataSourceA');
2522   asm
2523         MOV     ESP, EBP
2524         POP     EBP
2525         JMP     [_PdhBindInputDataSourceA]
2526   end;
2527 end;
2528 
2529 var
2530   _PdhBindInputDataSource: Pointer;
2531 
PdhBindInputDataSourcenull2532 function PdhBindInputDataSource;
2533 begin
2534   GetProcedureAddress(_PdhBindInputDataSource, PdhLib, 'PdhBindInputDataSource' + AWSuffix);
2535   asm
2536         MOV     ESP, EBP
2537         POP     EBP
2538         JMP     [_PdhBindInputDataSource]
2539   end;
2540 end;
2541 
2542 var
2543   _PdhOpenQueryH: Pointer;
2544 
PdhOpenQueryHnull2545 function PdhOpenQueryH;
2546 begin
2547   GetProcedureAddress(_PdhOpenQueryH, PdhLib, 'PdhOpenQueryH');
2548   asm
2549         MOV     ESP, EBP
2550         POP     EBP
2551         JMP     [_PdhOpenQueryH]
2552   end;
2553 end;
2554 
2555 var
2556   _PdhEnumMachinesHW: Pointer;
2557 
PdhEnumMachinesHWnull2558 function PdhEnumMachinesHW;
2559 begin
2560   GetProcedureAddress(_PdhEnumMachinesHW, PdhLib, 'PdhEnumMachinesHW');
2561   asm
2562         MOV     ESP, EBP
2563         POP     EBP
2564         JMP     [_PdhEnumMachinesHW]
2565   end;
2566 end;
2567 
2568 var
2569   _PdhEnumMachinesHA: Pointer;
2570 
PdhEnumMachinesHAnull2571 function PdhEnumMachinesHA;
2572 begin
2573   GetProcedureAddress(_PdhEnumMachinesHA, PdhLib, 'PdhEnumMachinesHA');
2574   asm
2575         MOV     ESP, EBP
2576         POP     EBP
2577         JMP     [_PdhEnumMachinesHA]
2578   end;
2579 end;
2580 
2581 var
2582   _PdhEnumMachinesH: Pointer;
2583 
PdhEnumMachinesHnull2584 function PdhEnumMachinesH;
2585 begin
2586   GetProcedureAddress(_PdhEnumMachinesH, PdhLib, 'PdhEnumMachinesH' + AWSuffix);
2587   asm
2588         MOV     ESP, EBP
2589         POP     EBP
2590         JMP     [_PdhEnumMachinesH]
2591   end;
2592 end;
2593 
2594 var
2595   _PdhEnumObjectsHW: Pointer;
2596 
PdhEnumObjectsHWnull2597 function PdhEnumObjectsHW;
2598 begin
2599   GetProcedureAddress(_PdhEnumObjectsHW, PdhLib, 'PdhEnumObjectsHW');
2600   asm
2601         MOV     ESP, EBP
2602         POP     EBP
2603         JMP     [_PdhEnumObjectsHW]
2604   end;
2605 end;
2606 
2607 var
2608   _PdhEnumObjectsHA: Pointer;
2609 
PdhEnumObjectsHAnull2610 function PdhEnumObjectsHA;
2611 begin
2612   GetProcedureAddress(_PdhEnumObjectsHA, PdhLib, 'PdhEnumObjectsHA');
2613   asm
2614         MOV     ESP, EBP
2615         POP     EBP
2616         JMP     [_PdhEnumObjectsHA]
2617   end;
2618 end;
2619 
2620 var
2621   _PdhEnumObjectsH: Pointer;
2622 
PdhEnumObjectsHnull2623 function PdhEnumObjectsH;
2624 begin
2625   GetProcedureAddress(_PdhEnumObjectsH, PdhLib, 'PdhEnumObjectsH' + AWSuffix);
2626   asm
2627         MOV     ESP, EBP
2628         POP     EBP
2629         JMP     [_PdhEnumObjectsH]
2630   end;
2631 end;
2632 
2633 var
2634   _PdhEnumObjectItemsHW: Pointer;
2635 
PdhEnumObjectItemsHWnull2636 function PdhEnumObjectItemsHW;
2637 begin
2638   GetProcedureAddress(_PdhEnumObjectItemsHW, PdhLib, 'PdhEnumObjectItemsHW');
2639   asm
2640         MOV     ESP, EBP
2641         POP     EBP
2642         JMP     [_PdhEnumObjectItemsHW]
2643   end;
2644 end;
2645 
2646 var
2647   _PdhEnumObjectItemsHA: Pointer;
2648 
PdhEnumObjectItemsHAnull2649 function PdhEnumObjectItemsHA;
2650 begin
2651   GetProcedureAddress(_PdhEnumObjectItemsHA, PdhLib, 'PdhEnumObjectItemsHA');
2652   asm
2653         MOV     ESP, EBP
2654         POP     EBP
2655         JMP     [_PdhEnumObjectItemsHA]
2656   end;
2657 end;
2658 
2659 var
2660   _PdhEnumObjectItemsH: Pointer;
2661 
PdhEnumObjectItemsHnull2662 function PdhEnumObjectItemsH;
2663 begin
2664   GetProcedureAddress(_PdhEnumObjectItemsH, PdhLib, 'PdhEnumObjectItemsH' + AWSuffix);
2665   asm
2666         MOV     ESP, EBP
2667         POP     EBP
2668         JMP     [_PdhEnumObjectItemsH]
2669   end;
2670 end;
2671 
2672 var
2673   _PdhExpandWildCardPathHW: Pointer;
2674 
PdhExpandWildCardPathHWnull2675 function PdhExpandWildCardPathHW;
2676 begin
2677   GetProcedureAddress(_PdhExpandWildCardPathHW, PdhLib, 'PdhExpandWildCardPathHW');
2678   asm
2679         MOV     ESP, EBP
2680         POP     EBP
2681         JMP     [_PdhExpandWildCardPathHW]
2682   end;
2683 end;
2684 
2685 var
2686   _PdhExpandWildCardPathHA: Pointer;
2687 
PdhExpandWildCardPathHAnull2688 function PdhExpandWildCardPathHA;
2689 begin
2690   GetProcedureAddress(_PdhExpandWildCardPathHA, PdhLib, 'PdhExpandWildCardPathHA');
2691   asm
2692         MOV     ESP, EBP
2693         POP     EBP
2694         JMP     [_PdhExpandWildCardPathHA]
2695   end;
2696 end;
2697 
2698 var
2699   _PdhExpandWildCardPathH: Pointer;
2700 
PdhExpandWildCardPathHnull2701 function PdhExpandWildCardPathH;
2702 begin
2703   GetProcedureAddress(_PdhExpandWildCardPathH, PdhLib, 'PdhExpandWildCardPathH' + AWSuffix);
2704   asm
2705         MOV     ESP, EBP
2706         POP     EBP
2707         JMP     [_PdhExpandWildCardPathH]
2708   end;
2709 end;
2710 
2711 var
2712   _PdhGetDataSourceTimeRangeH: Pointer;
2713 
PdhGetDataSourceTimeRangeHnull2714 function PdhGetDataSourceTimeRangeH;
2715 begin
2716   GetProcedureAddress(_PdhGetDataSourceTimeRangeH, PdhLib, 'PdhGetDataSourceTimeRangeH');
2717   asm
2718         MOV     ESP, EBP
2719         POP     EBP
2720         JMP     [_PdhGetDataSourceTimeRangeH]
2721   end;
2722 end;
2723 
2724 var
2725   _PdhGetDefaultPerfObjectHW: Pointer;
2726 
PdhGetDefaultPerfObjectHWnull2727 function PdhGetDefaultPerfObjectHW;
2728 begin
2729   GetProcedureAddress(_PdhGetDefaultPerfObjectHW, PdhLib, 'PdhGetDefaultPerfObjectHW');
2730   asm
2731         MOV     ESP, EBP
2732         POP     EBP
2733         JMP     [_PdhGetDefaultPerfObjectHW]
2734   end;
2735 end;
2736 
2737 var
2738   _PdhGetDefaultPerfObjectHA: Pointer;
2739 
PdhGetDefaultPerfObjectHAnull2740 function PdhGetDefaultPerfObjectHA;
2741 begin
2742   GetProcedureAddress(_PdhGetDefaultPerfObjectHA, PdhLib, 'PdhGetDefaultPerfObjectHA');
2743   asm
2744         MOV     ESP, EBP
2745         POP     EBP
2746         JMP     [_PdhGetDefaultPerfObjectHA]
2747   end;
2748 end;
2749 
2750 var
2751   _PdhGetDefaultPerfObjectH: Pointer;
2752 
PdhGetDefaultPerfObjectHnull2753 function PdhGetDefaultPerfObjectH;
2754 begin
2755   GetProcedureAddress(_PdhGetDefaultPerfObjectH, PdhLib, 'PdhGetDefaultPerfObjectH' + AWSuffix);
2756   asm
2757         MOV     ESP, EBP
2758         POP     EBP
2759         JMP     [_PdhGetDefaultPerfObjectH]
2760   end;
2761 end;
2762 
2763 var
2764   _PdhGetDefaultPerfCounterHW: Pointer;
2765 
PdhGetDefaultPerfCounterHWnull2766 function PdhGetDefaultPerfCounterHW;
2767 begin
2768   GetProcedureAddress(_PdhGetDefaultPerfCounterHW, PdhLib, 'PdhGetDefaultPerfCounterHW');
2769   asm
2770         MOV     ESP, EBP
2771         POP     EBP
2772         JMP     [_PdhGetDefaultPerfCounterHW]
2773   end;
2774 end;
2775 
2776 var
2777   _PdhGetDefaultPerfCounterHA: Pointer;
2778 
PdhGetDefaultPerfCounterHAnull2779 function PdhGetDefaultPerfCounterHA;
2780 begin
2781   GetProcedureAddress(_PdhGetDefaultPerfCounterHA, PdhLib, 'PdhGetDefaultPerfCounterHA');
2782   asm
2783         MOV     ESP, EBP
2784         POP     EBP
2785         JMP     [_PdhGetDefaultPerfCounterHA]
2786   end;
2787 end;
2788 
2789 var
2790   _PdhGetDefaultPerfCounterH: Pointer;
2791 
PdhGetDefaultPerfCounterHnull2792 function PdhGetDefaultPerfCounterH;
2793 begin
2794   GetProcedureAddress(_PdhGetDefaultPerfCounterH, PdhLib, 'PdhGetDefaultPerfCounterH' + AWSuffix);
2795   asm
2796         MOV     ESP, EBP
2797         POP     EBP
2798         JMP     [_PdhGetDefaultPerfCounterH]
2799   end;
2800 end;
2801 
2802 var
2803   _PdhBrowseCountersHW: Pointer;
2804 
PdhBrowseCountersHWnull2805 function PdhBrowseCountersHW;
2806 begin
2807   GetProcedureAddress(_PdhBrowseCountersHW, PdhLib, 'PdhBrowseCountersHW');
2808   asm
2809         MOV     ESP, EBP
2810         POP     EBP
2811         JMP     [_PdhBrowseCountersHW]
2812   end;
2813 end;
2814 
2815 var
2816   _PdhBrowseCountersHA: Pointer;
2817 
PdhBrowseCountersHAnull2818 function PdhBrowseCountersHA;
2819 begin
2820   GetProcedureAddress(_PdhBrowseCountersHA, PdhLib, 'PdhBrowseCountersHA');
2821   asm
2822         MOV     ESP, EBP
2823         POP     EBP
2824         JMP     [_PdhBrowseCountersHA]
2825   end;
2826 end;
2827 
2828 var
2829   _PdhBrowseCountersH: Pointer;
2830 
PdhBrowseCountersHnull2831 function PdhBrowseCountersH;
2832 begin
2833   GetProcedureAddress(_PdhBrowseCountersH, PdhLib, 'PdhBrowseCountersH' + AWSuffix);
2834   asm
2835         MOV     ESP, EBP
2836         POP     EBP
2837         JMP     [_PdhBrowseCountersH]
2838   end;
2839 end;
2840 
2841 var
2842   _PdhVerifySQLDBW: Pointer;
2843 
PdhVerifySQLDBWnull2844 function PdhVerifySQLDBW;
2845 begin
2846   GetProcedureAddress(_PdhVerifySQLDBW, PdhLib, 'PdhVerifySQLDBW');
2847   asm
2848         MOV     ESP, EBP
2849         POP     EBP
2850         JMP     [_PdhVerifySQLDBW]
2851   end;
2852 end;
2853 
2854 var
2855   _PdhVerifySQLDBA: Pointer;
2856 
PdhVerifySQLDBAnull2857 function PdhVerifySQLDBA;
2858 begin
2859   GetProcedureAddress(_PdhVerifySQLDBA, PdhLib, 'PdhVerifySQLDBA');
2860   asm
2861         MOV     ESP, EBP
2862         POP     EBP
2863         JMP     [_PdhVerifySQLDBA]
2864   end;
2865 end;
2866 
2867 var
2868   _PdhVerifySQLDB: Pointer;
2869 
PdhVerifySQLDBnull2870 function PdhVerifySQLDB;
2871 begin
2872   GetProcedureAddress(_PdhVerifySQLDB, PdhLib, 'PdhVerifySQLDB' + AWSuffix);
2873   asm
2874         MOV     ESP, EBP
2875         POP     EBP
2876         JMP     [_PdhVerifySQLDB]
2877   end;
2878 end;
2879 
2880 var
2881   _PdhCreateSQLTablesW: Pointer;
2882 
PdhCreateSQLTablesWnull2883 function PdhCreateSQLTablesW;
2884 begin
2885   GetProcedureAddress(_PdhCreateSQLTablesW, PdhLib, 'PdhCreateSQLTablesW');
2886   asm
2887         MOV     ESP, EBP
2888         POP     EBP
2889         JMP     [_PdhCreateSQLTablesW]
2890   end;
2891 end;
2892 
2893 var
2894   _PdhCreateSQLTablesA: Pointer;
2895 
PdhCreateSQLTablesAnull2896 function PdhCreateSQLTablesA;
2897 begin
2898   GetProcedureAddress(_PdhCreateSQLTablesA, PdhLib, 'PdhCreateSQLTablesA');
2899   asm
2900         MOV     ESP, EBP
2901         POP     EBP
2902         JMP     [_PdhCreateSQLTablesA]
2903   end;
2904 end;
2905 
2906 var
2907   _PdhCreateSQLTables: Pointer;
2908 
PdhCreateSQLTablesnull2909 function PdhCreateSQLTables;
2910 begin
2911   GetProcedureAddress(_PdhCreateSQLTables, PdhLib, 'PdhCreateSQLTables' + AWSuffix);
2912   asm
2913         MOV     ESP, EBP
2914         POP     EBP
2915         JMP     [_PdhCreateSQLTables]
2916   end;
2917 end;
2918 
2919 var
2920   _PdhEnumLogSetNamesW: Pointer;
2921 
PdhEnumLogSetNamesWnull2922 function PdhEnumLogSetNamesW;
2923 begin
2924   GetProcedureAddress(_PdhEnumLogSetNamesW, PdhLib, 'PdhEnumLogSetNamesW');
2925   asm
2926         MOV     ESP, EBP
2927         POP     EBP
2928         JMP     [_PdhEnumLogSetNamesW]
2929   end;
2930 end;
2931 
2932 var
2933   _PdhEnumLogSetNamesA: Pointer;
2934 
PdhEnumLogSetNamesAnull2935 function PdhEnumLogSetNamesA;
2936 begin
2937   GetProcedureAddress(_PdhEnumLogSetNamesA, PdhLib, 'PdhEnumLogSetNamesA');
2938   asm
2939         MOV     ESP, EBP
2940         POP     EBP
2941         JMP     [_PdhEnumLogSetNamesA]
2942   end;
2943 end;
2944 
2945 var
2946   _PdhEnumLogSetNames: Pointer;
2947 
PdhEnumLogSetNamesnull2948 function PdhEnumLogSetNames;
2949 begin
2950   GetProcedureAddress(_PdhEnumLogSetNames, PdhLib, 'PdhEnumLogSetNames' + AWSuffix);
2951   asm
2952         MOV     ESP, EBP
2953         POP     EBP
2954         JMP     [_PdhEnumLogSetNames]
2955   end;
2956 end;
2957 
2958 var
2959   _PdhGetLogSetGUID: Pointer;
2960 
PdhGetLogSetGUIDnull2961 function PdhGetLogSetGUID;
2962 begin
2963   GetProcedureAddress(_PdhGetLogSetGUID, PdhLib, 'PdhGetLogSetGUID');
2964   asm
2965         MOV     ESP, EBP
2966         POP     EBP
2967         JMP     [_PdhGetLogSetGUID]
2968   end;
2969 end;
2970 
2971 var
2972   _PdhSetLogSetRunID: Pointer;
2973 
PdhSetLogSetRunIDnull2974 function PdhSetLogSetRunID;
2975 begin
2976   GetProcedureAddress(_PdhSetLogSetRunID, PdhLib, 'PdhSetLogSetRunID');
2977   asm
2978         MOV     ESP, EBP
2979         POP     EBP
2980         JMP     [_PdhSetLogSetRunID]
2981   end;
2982 end;
2983 
2984 {$ELSE}
2985 
PdhGetDllVersionnull2986 function PdhGetDllVersion; external PdhLib name 'PdhGetDllVersion';
PdhOpenQueryAnull2987 function PdhOpenQueryA; external PdhLib name 'PdhOpenQueryA';
PdhOpenQueryWnull2988 function PdhOpenQueryW; external PdhLib name 'PdhOpenQueryW';
PdhOpenQuerynull2989 function PdhOpenQuery; external PdhLib name 'PdhOpenQuery' + AWSuffix;
PdhAddCounterAnull2990 function PdhAddCounterA; external PdhLib name 'PdhAddCounterA';
PdhAddCounterWnull2991 function PdhAddCounterW; external PdhLib name 'PdhAddCounterW';
PdhAddCounternull2992 function PdhAddCounter; external PdhLib name 'PdhAddCounter' + AWSuffix;
PdhRemoveCounternull2993 function PdhRemoveCounter; external PdhLib name 'PdhRemoveCounter';
PdhCollectQueryDatanull2994 function PdhCollectQueryData; external PdhLib name 'PdhCollectQueryData';
PdhCloseQuerynull2995 function PdhCloseQuery; external PdhLib name 'PdhCloseQuery';
PdhGetFormattedCounterValuenull2996 function PdhGetFormattedCounterValue; external PdhLib name 'PdhGetFormattedCounterValue';
PdhGetFormattedCounterArrayAnull2997 function PdhGetFormattedCounterArrayA; external PdhLib name 'PdhGetFormattedCounterArrayA';
PdhGetFormattedCounterArrayWnull2998 function PdhGetFormattedCounterArrayW; external PdhLib name 'PdhGetFormattedCounterArrayW';
PdhGetFormattedCounterArraynull2999 function PdhGetFormattedCounterArray; external PdhLib name 'PdhGetFormattedCounterArray' + AWSuffix;
PdhGetRawCounterValuenull3000 function PdhGetRawCounterValue; external PdhLib name 'PdhGetRawCounterValue';
PdhGetRawCounterArrayAnull3001 function PdhGetRawCounterArrayA; external PdhLib name 'PdhGetRawCounterArrayA';
PdhGetRawCounterArrayWnull3002 function PdhGetRawCounterArrayW; external PdhLib name 'PdhGetRawCounterArrayW';
PdhGetRawCounterArraynull3003 function PdhGetRawCounterArray; external PdhLib name 'PdhGetRawCounterArray' + AWSuffix;
PdhCalculateCounterFromRawValuenull3004 function PdhCalculateCounterFromRawValue; external PdhLib name 'PdhCalculateCounterFromRawValue';
PdhComputeCounterStatisticsnull3005 function PdhComputeCounterStatistics; external PdhLib name 'PdhComputeCounterStatistics';
PdhGetCounterInfoAnull3006 function PdhGetCounterInfoA; external PdhLib name 'PdhGetCounterInfoA';
PdhGetCounterInfoWnull3007 function PdhGetCounterInfoW; external PdhLib name 'PdhGetCounterInfoW';
PdhGetCounterInfonull3008 function PdhGetCounterInfo; external PdhLib name 'PdhGetCounterInfo' + AWSuffix;
PdhSetCounterScaleFactornull3009 function PdhSetCounterScaleFactor; external PdhLib name 'PdhSetCounterScaleFactor';
PdhConnectMachineAnull3010 function PdhConnectMachineA; external PdhLib name 'PdhConnectMachineA';
PdhConnectMachineWnull3011 function PdhConnectMachineW; external PdhLib name 'PdhConnectMachineW';
PdhConnectMachinenull3012 function PdhConnectMachine; external PdhLib name 'PdhConnectMachine' + AWSuffix;
PdhEnumMachinesAnull3013 function PdhEnumMachinesA; external PdhLib name 'PdhEnumMachinesA';
PdhEnumMachinesWnull3014 function PdhEnumMachinesW; external PdhLib name 'PdhEnumMachinesW';
PdhEnumMachinesnull3015 function PdhEnumMachines; external PdhLib name 'PdhEnumMachines' + AWSuffix;
PdhEnumObjectsAnull3016 function PdhEnumObjectsA; external PdhLib name 'PdhEnumObjectsA';
PdhEnumObjectsWnull3017 function PdhEnumObjectsW; external PdhLib name 'PdhEnumObjectsW';
PdhEnumObjectsnull3018 function PdhEnumObjects; external PdhLib name 'PdhEnumObjects' + AWSuffix;
PdhEnumObjectItemsAnull3019 function PdhEnumObjectItemsA; external PdhLib name 'PdhEnumObjectItemsA';
PdhEnumObjectItemsWnull3020 function PdhEnumObjectItemsW; external PdhLib name 'PdhEnumObjectItemsW';
PdhEnumObjectItemsnull3021 function PdhEnumObjectItems; external PdhLib name 'PdhEnumObjectItems' + AWSuffix;
PdhMakeCounterPathAnull3022 function PdhMakeCounterPathA; external PdhLib name 'PdhMakeCounterPathA';
PdhMakeCounterPathWnull3023 function PdhMakeCounterPathW; external PdhLib name 'PdhMakeCounterPathW';
PdhMakeCounterPathnull3024 function PdhMakeCounterPath; external PdhLib name 'PdhMakeCounterPath' + AWSuffix;
PdhParseCounterPathAnull3025 function PdhParseCounterPathA; external PdhLib name 'PdhParseCounterPathA';
PdhParseCounterPathWnull3026 function PdhParseCounterPathW; external PdhLib name 'PdhParseCounterPathW';
PdhParseCounterPathnull3027 function PdhParseCounterPath; external PdhLib name 'PdhParseCounterPath' + AWSuffix;
PdhParseInstanceNameAnull3028 function PdhParseInstanceNameA; external PdhLib name 'PdhParseInstanceNameA';
PdhParseInstanceNameWnull3029 function PdhParseInstanceNameW; external PdhLib name 'PdhParseInstanceNameW';
PdhParseInstanceNamenull3030 function PdhParseInstanceName; external PdhLib name 'PdhParseInstanceName' + AWSuffix;
PdhValidatePathAnull3031 function PdhValidatePathA; external PdhLib name 'PdhValidatePathA';
PdhValidatePathWnull3032 function PdhValidatePathW; external PdhLib name 'PdhValidatePathW';
PdhValidatePathnull3033 function PdhValidatePath; external PdhLib name 'PdhValidatePath' + AWSuffix;
PdhGetDefaultPerfObjectAnull3034 function PdhGetDefaultPerfObjectA; external PdhLib name 'PdhGetDefaultPerfObjectA';
PdhGetDefaultPerfObjectWnull3035 function PdhGetDefaultPerfObjectW; external PdhLib name 'PdhGetDefaultPerfObjectW';
PdhGetDefaultPerfObjectnull3036 function PdhGetDefaultPerfObject; external PdhLib name 'PdhGetDefaultPerfObject' + AWSuffix;
PdhGetDefaultPerfCounterAnull3037 function PdhGetDefaultPerfCounterA; external PdhLib name 'PdhGetDefaultPerfCounterA';
PdhGetDefaultPerfCounterWnull3038 function PdhGetDefaultPerfCounterW; external PdhLib name 'PdhGetDefaultPerfCounterW';
PdhGetDefaultPerfCounternull3039 function PdhGetDefaultPerfCounter; external PdhLib name 'PdhGetDefaultPerfCounter' + AWSuffix;
PdhBrowseCountersAnull3040 function PdhBrowseCountersA; external PdhLib name 'PdhBrowseCountersA';
PdhBrowseCountersWnull3041 function PdhBrowseCountersW; external PdhLib name 'PdhBrowseCountersW';
PdhBrowseCountersnull3042 function PdhBrowseCounters; external PdhLib name 'PdhBrowseCounters' + AWSuffix;
PdhExpandCounterPathAnull3043 function PdhExpandCounterPathA; external PdhLib name 'PdhExpandCounterPathA';
PdhExpandCounterPathWnull3044 function PdhExpandCounterPathW; external PdhLib name 'PdhExpandCounterPathW';
PdhExpandCounterPathnull3045 function PdhExpandCounterPath; external PdhLib name 'PdhExpandCounterPath' + AWSuffix;
PdhLookupPerfNameByIndexAnull3046 function PdhLookupPerfNameByIndexA; external PdhLib name 'PdhLookupPerfNameByIndexA';
PdhLookupPerfNameByIndexWnull3047 function PdhLookupPerfNameByIndexW; external PdhLib name 'PdhLookupPerfNameByIndexW';
PdhLookupPerfNameByIndexnull3048 function PdhLookupPerfNameByIndex; external PdhLib name 'PdhLookupPerfNameByIndex' + AWSuffix;
PdhLookupPerfIndexByNameAnull3049 function PdhLookupPerfIndexByNameA; external PdhLib name 'PdhLookupPerfIndexByNameA';
PdhLookupPerfIndexByNameWnull3050 function PdhLookupPerfIndexByNameW; external PdhLib name 'PdhLookupPerfIndexByNameW';
PdhLookupPerfIndexByNamenull3051 function PdhLookupPerfIndexByName; external PdhLib name 'PdhLookupPerfIndexByName' + AWSuffix;
PdhExpandWildCardPathAnull3052 function PdhExpandWildCardPathA; external PdhLib name 'PdhExpandWildCardPathA';
PdhExpandWildCardPathWnull3053 function PdhExpandWildCardPathW; external PdhLib name 'PdhExpandWildCardPathW';
PdhExpandWildCardPathnull3054 function PdhExpandWildCardPath; external PdhLib name 'PdhExpandWildCardPath' + AWSuffix;
PdhOpenLogAnull3055 function PdhOpenLogA; external PdhLib name 'PdhOpenLogA';
PdhOpenLogWnull3056 function PdhOpenLogW; external PdhLib name 'PdhOpenLogW';
PdhOpenLognull3057 function PdhOpenLog; external PdhLib name 'PdhOpenLog' + AWSuffix;
PdhUpdateLogAnull3058 function PdhUpdateLogA; external PdhLib name 'PdhUpdateLogA';
PdhUpdateLogWnull3059 function PdhUpdateLogW; external PdhLib name 'PdhUpdateLogW';
PdhUpdateLognull3060 function PdhUpdateLog; external PdhLib name 'PdhUpdateLog' + AWSuffix;
PdhUpdateLogFileCatalognull3061 function PdhUpdateLogFileCatalog; external PdhLib name 'PdhUpdateLogFileCatalog';
PdhGetLogFileSizenull3062 function PdhGetLogFileSize; external PdhLib name 'PdhGetLogFileSize';
PdhCloseLognull3063 function PdhCloseLog; external PdhLib name 'PdhCloseLog';
PdhSelectDataSourceAnull3064 function PdhSelectDataSourceA; external PdhLib name 'PdhSelectDataSourceA';
PdhSelectDataSourceWnull3065 function PdhSelectDataSourceW; external PdhLib name 'PdhSelectDataSourceW';
PdhSelectDataSourcenull3066 function PdhSelectDataSource; external PdhLib name 'PdhSelectDataSource' + AWSuffix;
PdhIsRealTimeQuerynull3067 function PdhIsRealTimeQuery; external PdhLib name 'PdhIsRealTimeQuery';
PdhSetQueryTimeRangenull3068 function PdhSetQueryTimeRange; external PdhLib name 'PdhSetQueryTimeRange';
PdhGetDataSourceTimeRangeAnull3069 function PdhGetDataSourceTimeRangeA; external PdhLib name 'PdhGetDataSourceTimeRangeA';
PdhGetDataSourceTimeRangeWnull3070 function PdhGetDataSourceTimeRangeW; external PdhLib name 'PdhGetDataSourceTimeRangeW';
PdhGetDataSourceTimeRangenull3071 function PdhGetDataSourceTimeRange; external PdhLib name 'PdhGetDataSourceTimeRange' + AWSuffix;
PdhCollectQueryDataExnull3072 function PdhCollectQueryDataEx; external PdhLib name 'PdhCollectQueryDataEx';
PdhFormatFromRawValuenull3073 function PdhFormatFromRawValue; external PdhLib name 'PdhFormatFromRawValue';
PdhGetCounterTimeBasenull3074 function PdhGetCounterTimeBase; external PdhLib name 'PdhGetCounterTimeBase';
PdhReadRawLogRecordnull3075 function PdhReadRawLogRecord; external PdhLib name 'PdhReadRawLogRecord';
PdhSetDefaultRealTimeDataSourcenull3076 function PdhSetDefaultRealTimeDataSource; external PdhLib name 'PdhSetDefaultRealTimeDataSource';
PdhBindInputDataSourceWnull3077 function PdhBindInputDataSourceW; external PdhLib name 'PdhBindInputDataSourceW';
PdhBindInputDataSourceAnull3078 function PdhBindInputDataSourceA; external PdhLib name 'PdhBindInputDataSourceA';
PdhBindInputDataSourcenull3079 function PdhBindInputDataSource; external PdhLib name 'PdhBindInputDataSource' + AWSuffix;
PdhOpenQueryHnull3080 function PdhOpenQueryH; external PdhLib name 'PdhOpenQueryH';
PdhEnumMachinesHWnull3081 function PdhEnumMachinesHW; external PdhLib name 'PdhEnumMachinesHW';
PdhEnumMachinesHAnull3082 function PdhEnumMachinesHA; external PdhLib name 'PdhEnumMachinesHA';
PdhEnumMachinesHnull3083 function PdhEnumMachinesH; external PdhLib name 'PdhEnumMachinesH' + AWSuffix;
PdhEnumObjectsHWnull3084 function PdhEnumObjectsHW; external PdhLib name 'PdhEnumObjectsHW';
PdhEnumObjectsHAnull3085 function PdhEnumObjectsHA; external PdhLib name 'PdhEnumObjectsHA';
PdhEnumObjectsHnull3086 function PdhEnumObjectsH; external PdhLib name 'PdhEnumObjectsH' + AWSuffix;
PdhEnumObjectItemsHWnull3087 function PdhEnumObjectItemsHW; external PdhLib name 'PdhEnumObjectItemsHW';
PdhEnumObjectItemsHAnull3088 function PdhEnumObjectItemsHA; external PdhLib name 'PdhEnumObjectItemsHA';
PdhEnumObjectItemsHnull3089 function PdhEnumObjectItemsH; external PdhLib name 'PdhEnumObjectItemsH' + AWSuffix;
PdhExpandWildCardPathHWnull3090 function PdhExpandWildCardPathHW; external PdhLib name 'PdhExpandWildCardPathHW';
PdhExpandWildCardPathHAnull3091 function PdhExpandWildCardPathHA; external PdhLib name 'PdhExpandWildCardPathHA';
PdhExpandWildCardPathHnull3092 function PdhExpandWildCardPathH; external PdhLib name 'PdhExpandWildCardPathH' + AWSuffix;
PdhGetDataSourceTimeRangeHnull3093 function PdhGetDataSourceTimeRangeH; external PdhLib name 'PdhGetDataSourceTimeRangeH';
PdhGetDefaultPerfObjectHWnull3094 function PdhGetDefaultPerfObjectHW; external PdhLib name 'PdhGetDefaultPerfObjectHW';
PdhGetDefaultPerfObjectHAnull3095 function PdhGetDefaultPerfObjectHA; external PdhLib name 'PdhGetDefaultPerfObjectHA';
PdhGetDefaultPerfObjectHnull3096 function PdhGetDefaultPerfObjectH; external PdhLib name 'PdhGetDefaultPerfObjectH' + AWSuffix;
PdhGetDefaultPerfCounterHWnull3097 function PdhGetDefaultPerfCounterHW; external PdhLib name 'PdhGetDefaultPerfCounterHW';
PdhGetDefaultPerfCounterHAnull3098 function PdhGetDefaultPerfCounterHA; external PdhLib name 'PdhGetDefaultPerfCounterHA';
PdhGetDefaultPerfCounterHnull3099 function PdhGetDefaultPerfCounterH; external PdhLib name 'PdhGetDefaultPerfCounterH' + AWSuffix;
PdhBrowseCountersHWnull3100 function PdhBrowseCountersHW; external PdhLib name 'PdhBrowseCountersHW';
PdhBrowseCountersHAnull3101 function PdhBrowseCountersHA; external PdhLib name 'PdhBrowseCountersHA';
PdhBrowseCountersHnull3102 function PdhBrowseCountersH; external PdhLib name 'PdhBrowseCountersH' + AWSuffix;
PdhVerifySQLDBWnull3103 function PdhVerifySQLDBW; external PdhLib name 'PdhVerifySQLDBW';
PdhVerifySQLDBAnull3104 function PdhVerifySQLDBA; external PdhLib name 'PdhVerifySQLDBA';
PdhVerifySQLDBnull3105 function PdhVerifySQLDB; external PdhLib name 'PdhVerifySQLDB' + AWSuffix;
PdhCreateSQLTablesWnull3106 function PdhCreateSQLTablesW; external PdhLib name 'PdhCreateSQLTablesW';
PdhCreateSQLTablesAnull3107 function PdhCreateSQLTablesA; external PdhLib name 'PdhCreateSQLTablesA';
PdhCreateSQLTablesnull3108 function PdhCreateSQLTables; external PdhLib name 'PdhCreateSQLTables' + AWSuffix;
PdhEnumLogSetNamesWnull3109 function PdhEnumLogSetNamesW; external PdhLib name 'PdhEnumLogSetNamesW';
PdhEnumLogSetNamesAnull3110 function PdhEnumLogSetNamesA; external PdhLib name 'PdhEnumLogSetNamesA';
PdhEnumLogSetNamesnull3111 function PdhEnumLogSetNames; external PdhLib name 'PdhEnumLogSetNames' + AWSuffix;
PdhGetLogSetGUIDnull3112 function PdhGetLogSetGUID; external PdhLib name 'PdhGetLogSetGUID';
PdhSetLogSetRunIDnull3113 function PdhSetLogSetRunID; external PdhLib name 'PdhSetLogSetRunID';
3114 
3115 {$ENDIF DYNAMIC_LINK}
3116 
3117 {$ENDIF JWA_INTERFACESECTION}
3118 
3119 {$IFNDEF JWA_OMIT_SECTIONS}
3120 end.
3121 {$ENDIF JWA_OMIT_SECTIONS}
3122