home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / RTLWIN32.PAK / PDH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  16.0 KB  |  582 lines

  1. /*++
  2.  
  3. Copyright (C) 1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     PDH.H
  8.  
  9. Abstract:
  10.  
  11.     Header file for the Performance Data Helper (PDH) DLL functions.
  12.  
  13. --*/
  14.  
  15. /* $Copyright: 1997$ */
  16.  
  17. #ifndef _PDH_H_
  18. #define _PDH_H_
  19. #pragma option -b
  20.  
  21. // system include files required for datatype and constant definitions
  22. #pragma option -b.
  23. #include <windows.h>    // necessary for data types used in this file
  24. #pragma option -b
  25. #pragma option -b.
  26. #include <winperf.h>    // necessary for the Detail Level definitions
  27. #pragma option -b
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32.  
  33. typedef LONG            PDH_STATUS;
  34.  
  35. #define PDH_FUNCTION    PDH_STATUS __stdcall
  36.  
  37. // version info
  38. #define PDH_CVERSION_WIN40  0x0400
  39. #define PDH_VERSION         PDH_CVERSION_WIN40
  40.  
  41. // define severity masks
  42. #define IsSuccessSeverity(ErrorCode)    \
  43.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x00000000L) ? TRUE : FALSE)
  44. #define IsInformationalSeverity(ErrorCode)    \
  45.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x40000000L) ? TRUE : FALSE)
  46. #define IsWarningSeverity(ErrorCode)    \
  47.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x80000000L) ? TRUE : FALSE)
  48. #define IsErrorSeverity(ErrorCode)      \
  49.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0xC0000000L) ? TRUE : FALSE)
  50.  
  51. // data type definitions
  52.  
  53. typedef HANDLE  HCOUNTER;
  54. typedef HANDLE  HQUERY;
  55.  
  56. typedef struct _PDH_RAW_COUNTER {
  57.     DWORD       CStatus;
  58.     FILETIME    TimeStamp;
  59.     LONGLONG    FirstValue;
  60.     LONGLONG    SecondValue;
  61.     DWORD       MultiCount;
  62. } PDH_RAW_COUNTER, *PPDH_RAW_COUNTER;
  63.  
  64. typedef struct _PDH_FMT_COUNTERVALUE {
  65.     DWORD    CStatus;
  66.     union {
  67.         LONG        longValue;
  68.         double      doubleValue;
  69.         LONGLONG    largeValue;
  70.     };
  71. } PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
  72.  
  73. typedef struct _PDH_STATISTICS {
  74.     DWORD                   dwFormat;
  75.     DWORD                   count;
  76.     PDH_FMT_COUNTERVALUE    min;
  77.     PDH_FMT_COUNTERVALUE    max;
  78.     PDH_FMT_COUNTERVALUE    mean;
  79. } PDH_STATISTICS, *PPDH_STATISTICS;
  80.  
  81. typedef struct _PDH_COUNTER_PATH_ELEMENTS_A {
  82.     LPSTR   szMachineName;
  83.     LPSTR   szObjectName;
  84.     LPSTR   szInstanceName;
  85.     LPSTR   szParentInstance;
  86.     DWORD   dwInstanceIndex;
  87.     LPSTR   szCounterName;
  88. } PDH_COUNTER_PATH_ELEMENTS_A, *PPDH_COUNTER_PATH_ELEMENTS_A;
  89.  
  90. typedef struct _PDH_COUNTER_PATH_ELEMENTS_W {
  91.     LPWSTR  szMachineName;
  92.     LPWSTR  szObjectName;
  93.     LPWSTR  szInstanceName;
  94.     LPWSTR  szParentInstance;
  95.     DWORD   dwInstanceIndex;
  96.     LPWSTR  szCounterName;
  97. } PDH_COUNTER_PATH_ELEMENTS_W, *PPDH_COUNTER_PATH_ELEMENTS_W;
  98.  
  99. typedef struct _PDH_COUNTER_INFO_A {
  100.     DWORD   dwLength;
  101.     DWORD   dwType;
  102.     DWORD   CVersion;
  103.     DWORD   CStatus;
  104.     LONG    lScale;
  105.     LONG    lDefaultScale;
  106.     DWORD   dwUserData;
  107.     DWORD   dwQueryUserData;
  108.     LPSTR   szFullPath;
  109.     union   {
  110.         PDH_COUNTER_PATH_ELEMENTS_A CounterPath;
  111.         struct {
  112.             LPSTR   szMachineName;
  113.             LPSTR   szObjectName;
  114.             LPSTR   szInstanceName;
  115.             LPSTR   szParentInstance;
  116.             DWORD   dwInstanceIndex;
  117.             LPSTR   szCounterName;
  118.         };
  119.     };
  120.     LPSTR   szExplainText;
  121.     DWORD   DataBuffer[1];
  122. } PDH_COUNTER_INFO_A, *PPDH_COUNTER_INFO_A;
  123.  
  124. typedef struct _PDH_COUNTER_INFO_W {
  125.     DWORD   dwLength;
  126.     DWORD   dwType;
  127.     DWORD   CVersion;
  128.     DWORD   CStatus;
  129.     LONG    lScale;
  130.     LONG    lDefaultScale;
  131.     DWORD   dwUserData;
  132.     DWORD   dwQueryUserData;
  133.     LPWSTR  szFullPath;
  134.     union   {
  135.         PDH_COUNTER_PATH_ELEMENTS_W CounterPath;
  136.         struct {
  137.             LPWSTR   szMachineName;
  138.             LPWSTR   szObjectName;
  139.             LPWSTR   szInstanceName;
  140.             LPWSTR   szParentInstance;
  141.             DWORD    dwInstanceIndex;
  142.             LPWSTR   szCounterName;
  143.         };
  144.     };
  145.     LPWSTR  szExplainText;
  146.     DWORD   DataBuffer[1];
  147. } PDH_COUNTER_INFO_W, *PPDH_COUNTER_INFO_W;
  148.  
  149. // function definitions
  150.  
  151. PDH_FUNCTION 
  152. PdhGetDllVersion(
  153.     IN  LPDWORD lpdwVersion
  154. );
  155.  
  156. //
  157. //  Query Functions
  158. //
  159.  
  160. PDH_FUNCTION
  161. PdhOpenQuery (
  162.     IN      LPVOID      pReserved,
  163.     IN      DWORD       dwUserData,
  164.     IN      HQUERY      *phQuery
  165. );
  166.  
  167. PDH_FUNCTION
  168. PdhAddCounterW (
  169.     IN      HQUERY      hQuery,
  170.     IN      LPCWSTR     szFullCounterPath,
  171.     IN      DWORD       dwUserData,
  172.     IN      HCOUNTER    *phCounter
  173. );
  174.  
  175. PDH_FUNCTION
  176. PdhAddCounterA (
  177.     IN      HQUERY      hQuery,
  178.     IN      LPCSTR      szFullCounterPath,
  179.     IN      DWORD       dwUserData,
  180.     IN      HCOUNTER    *phCounter
  181. );
  182.  
  183. PDH_FUNCTION
  184. PdhRemoveCounter (
  185.     IN      HCOUNTER    hCounter
  186. );
  187.  
  188. PDH_FUNCTION
  189. PdhCollectQueryData (
  190.     IN      HQUERY      hQuery
  191. );
  192.  
  193. PDH_FUNCTION
  194. PdhCloseQuery (
  195.     IN      HQUERY      hQuery
  196. );
  197.     
  198. //
  199. //  Counter Functions
  200. //
  201.  
  202. PDH_FUNCTION
  203. PdhGetFormattedCounterValue (
  204.     IN      HCOUNTER                hCounter,
  205.     IN      DWORD                   dwFormat,
  206.     IN      LPDWORD                 lpdwType,
  207.     IN      PPDH_FMT_COUNTERVALUE   pValue
  208. );
  209.  
  210. // dwFormat flag values
  211. // 
  212. #define PDH_FMT_RAW     ((DWORD)0x00000010)
  213. #define PDH_FMT_ANSI    ((DWORD)0x00000020)
  214. #define PDH_FMT_UNICODE ((DWORD)0x00000040)
  215. #define PDH_FMT_LONG    ((DWORD)0x00000100)
  216. #define PDH_FMT_DOUBLE  ((DWORD)0x00000200)
  217. #define PDH_FMT_LARGE   ((DWORD)0x00000400)
  218. #define PDH_FMT_NOSCALE ((DWORD)0x00001000)
  219. #define PDH_FMT_1000    ((DWORD)0x00002000)
  220. #define PDH_FMT_NODATA  ((DWORD)0x00004000)
  221.  
  222. PDH_FUNCTION
  223. PdhGetRawCounterValue (
  224.     IN      HCOUNTER            hCounter,
  225.     IN      LPDWORD             lpdwType,
  226.     IN      PPDH_RAW_COUNTER    pValue
  227. );
  228.  
  229. PDH_FUNCTION
  230. PdhCalculateCounterFromRawValue (
  231.     IN      HCOUNTER                hCounter,
  232.     IN      DWORD                   dwFormat,
  233.     IN      PPDH_RAW_COUNTER        rawValue1,
  234.     IN      PPDH_RAW_COUNTER        rawValue2,
  235.     IN      PPDH_FMT_COUNTERVALUE   fmtValue
  236. );
  237.  
  238. PDH_FUNCTION
  239. PdhComputeCounterStatistics (
  240.     IN      HCOUNTER            hCounter,
  241.     IN      DWORD               dwFormat,
  242.     IN      DWORD               dwFirstEntry,
  243.     IN      DWORD               dwNumEntries,
  244.     IN      PPDH_RAW_COUNTER    lpRawValueArray,
  245.     IN      PPDH_STATISTICS     data
  246. );
  247.  
  248. PDH_FUNCTION
  249. PdhGetCounterInfoW (
  250.     IN      HCOUNTER            hCounter,
  251.     IN      BOOLEAN             bRetrieveExplainText,
  252.     IN      LPDWORD             pdwBufferSize,
  253.     IN      PPDH_COUNTER_INFO_W lpBuffer
  254. );
  255.  
  256. PDH_FUNCTION
  257. PdhGetCounterInfoA (
  258.     IN      HCOUNTER            hCounter,
  259.     IN      BOOLEAN             bRetrieveExplainText,
  260.     IN      LPDWORD             pdwBufferSize,
  261.     IN      PPDH_COUNTER_INFO_A lpBuffer
  262. );
  263.  
  264. #define PDH_MAX_SCALE    (7L)
  265. #define PDH_MIN_SCALE   (-7L)
  266.  
  267. PDH_FUNCTION
  268. PdhSetCounterScaleFactor (
  269.     IN      HCOUNTER    hCounter,
  270.     IN      LONG        lFactor
  271. );
  272. //
  273. //   Browsing and enumeration functions
  274. //
  275. PDH_FUNCTION
  276. PdhConnectMachineW (
  277.     IN      LPCWSTR  szMachineName
  278. );
  279.  
  280. PDH_FUNCTION
  281. PdhConnectMachineA (
  282.     IN      LPCSTR  szMachineName
  283. );
  284.  
  285. PDH_FUNCTION
  286. PdhEnumMachinesW (
  287.     IN      LPCWSTR szReserved,
  288.     IN      LPWSTR  mszMachineList,
  289.     IN      LPDWORD pcchBufferSize
  290. );
  291.  
  292. PDH_FUNCTION
  293. PdhEnumMachinesA (
  294.     IN      LPCSTR   szReserved,
  295.     IN      LPSTR    mszMachineList,
  296.     IN      LPDWORD  pcchBufferSize
  297. );
  298.  
  299. PDH_FUNCTION
  300. PdhEnumObjectsW (
  301.     IN      LPCWSTR szReserved,
  302.     IN      LPCWSTR szMachineName,
  303.     IN      LPWSTR  mszObjectList,
  304.     IN      LPDWORD pcchBufferSize,
  305.     IN      DWORD   dwDetailLevel,
  306.     IN      BOOL    bRefresh
  307. );
  308.  
  309. PDH_FUNCTION
  310. PdhEnumObjectsA (
  311.     IN      LPCSTR  szReserved,
  312.     IN      LPCSTR  szMachineName,
  313.     IN      LPSTR   mszObjectList,
  314.     IN      LPDWORD pcchBufferSize,
  315.     IN      DWORD   dwDetailLevel,
  316.     IN      BOOL    bRefresh
  317. );
  318.  
  319. PDH_FUNCTION
  320. PdhEnumObjectItemsW (
  321.     IN      LPCWSTR szReserved,
  322.     IN      LPCWSTR szMachineName,
  323.     IN      LPCWSTR szObjectName,
  324.     IN      LPWSTR  mszCounterList,
  325.     IN      LPDWORD pcchCounterListLength,
  326.     IN      LPWSTR  mszInstanceList,
  327.     IN      LPDWORD pcchInstanceListLength,
  328.     IN      DWORD   dwDetailLevel,
  329.     IN      DWORD   dwFlags
  330. );
  331.  
  332. PDH_FUNCTION
  333. PdhEnumObjectItemsA (
  334.     IN      LPCSTR  szReserved,
  335.     IN      LPCSTR  szMachineName,
  336.     IN      LPCSTR  szObjectName,
  337.     IN      LPSTR   mszCounterList,
  338.     IN      LPDWORD pcchCounterListLength,
  339.     IN      LPSTR   mszInstanceList,
  340.     IN      LPDWORD pcchInstanceListLength,
  341.     IN      DWORD   dwDetailLevel,
  342.     IN      DWORD   dwFlags
  343. );
  344.  
  345. PDH_FUNCTION
  346. PdhMakeCounterPathW (
  347.     IN      PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
  348.     IN      LPWSTR                      szFullPathBuffer,
  349.     IN      LPDWORD                     pcchBufferSize,
  350.     IN      DWORD                       dwFlags
  351. );
  352.  
  353. PDH_FUNCTION
  354. PdhMakeCounterPathA (
  355.     IN      PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
  356.     IN      LPSTR                       szFullPathBuffer,
  357.     IN      LPDWORD                     pcchBufferSize,
  358.     IN      DWORD                       dwFlags
  359. );
  360.  
  361. PDH_FUNCTION
  362. PdhParseCounterPathW (
  363.     IN      LPCWSTR                     szFullPathBuffer,
  364.     IN      PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
  365.     IN      LPDWORD                     pdwBufferSize,
  366.     IN      DWORD                       dwFlags
  367. );
  368.  
  369. PDH_FUNCTION
  370. PdhParseCounterPathA (
  371.     IN      LPCSTR                      szFullPathBuffer,
  372.     IN      PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
  373.     IN      LPDWORD                     pdwBufferSize,
  374.     IN      DWORD                       dwFlags
  375. );
  376.  
  377. PDH_FUNCTION
  378. PdhParseInstanceNameW (
  379.     IN      LPCWSTR szInstanceString,
  380.     IN      LPWSTR  szInstanceName,
  381.     IN      LPDWORD pcchInstanceNameLength,
  382.     IN      LPWSTR  szParentName,
  383.     IN      LPDWORD pcchParentNameLength,
  384.     IN      LPDWORD lpIndex
  385. );
  386.  
  387. PDH_FUNCTION
  388. PdhParseInstanceNameA (
  389.     IN      LPCSTR  szInstanceString,
  390.     IN      LPSTR   szInstanceName,
  391.     IN      LPDWORD pcchInstanceNameLength,
  392.     IN      LPSTR   szParentName,
  393.     IN      LPDWORD pcchParentNameLength,
  394.     IN      LPDWORD lpIndex
  395. );
  396.  
  397. PDH_FUNCTION
  398. PdhValidatePathW (
  399.     IN      LPCWSTR szFullPathBuffer
  400. );
  401.  
  402. PDH_FUNCTION
  403. PdhValidatePathA (
  404.     IN      LPCSTR  szFullPathBuffer
  405. );
  406.  
  407. PDH_FUNCTION
  408. PdhGetDefaultPerfObjectW (
  409.     IN      LPCWSTR szReserved,
  410.     IN      LPCWSTR szMachineName,
  411.     IN      LPWSTR  szDefaultObjectName,
  412.     IN      LPDWORD pcchBufferSize
  413. );
  414.  
  415. PDH_FUNCTION
  416. PdhGetDefaultPerfObjectA (
  417.     IN      LPCSTR  szReserved,
  418.     IN      LPCSTR  szMachineName,
  419.     IN      LPSTR   szDefaultObjectName,
  420.     IN      LPDWORD pcchBufferSize
  421. );
  422.  
  423. PDH_FUNCTION
  424. PdhGetDefaultPerfCounterW (
  425.     IN      LPCWSTR szReserved,
  426.     IN      LPCWSTR szMachineName,
  427.     IN      LPCWSTR szObjectName,
  428.     IN      LPWSTR  szDefaultCounterName,
  429.     IN      LPDWORD pcchBufferSize
  430. );
  431.  
  432. PDH_FUNCTION
  433. PdhGetDefaultPerfCounterA (
  434.     IN      LPCSTR  szReserved,
  435.     IN      LPCSTR  szMachineName,
  436.     IN      LPCSTR  szObjectName,
  437.     IN      LPSTR   szDefaultCounterName,
  438.     IN      LPDWORD pcchBufferSize
  439. );
  440.  
  441. typedef PDH_STATUS (__stdcall *CounterPathCallBack)(DWORD);
  442.  
  443. typedef struct _BrowseDlgConfig_W {
  444.     // Configuration flags
  445.     DWORD   bIncludeInstanceIndex:1,
  446.             bSingleCounterPerAdd:1,
  447.             bSingleCounterPerDialog:1,
  448.             bLocalCountersOnly:1,
  449.             bWildCardInstances:1,
  450.             bHideDetailBox:1,
  451.             bInitializePath:1,
  452.             bDisableMachineSelection:1,
  453.             bReserved:24;
  454.  
  455.     HWND                hWndOwner;
  456.     LPWSTR              szReserved;
  457.     LPWSTR              szReturnPathBuffer;
  458.     DWORD               cchReturnPathLength;
  459.     CounterPathCallBack pCallBack;
  460.     DWORD               dwCallBackArg;
  461.     PDH_STATUS          CallBackStatus;
  462.     DWORD               dwDefaultDetailLevel;
  463.     LPWSTR              szDialogBoxCaption;
  464. } PDH_BROWSE_DLG_CONFIG_W, *PPDH_BROWSE_DLG_CONFIG_W;
  465.  
  466. typedef struct _BrowseDlgConfig_A {
  467.     // Configuration flags
  468.     DWORD   bIncludeInstanceIndex:1,
  469.             bSingleCounterPerAdd:1,
  470.             bSingleCounterPerDialog:1,
  471.             bLocalCountersOnly:1,
  472.             bWildCardInstances:1,
  473.             bHideDetailBox:1,
  474.             bInitializePath:1,
  475.             bDisableMachineSelection:1,
  476.             bReserved:24;
  477.  
  478.     HWND                hWndOwner;
  479.     LPSTR               szReserved;
  480.     LPSTR               szReturnPathBuffer;
  481.     DWORD               cchReturnPathLength;
  482.     CounterPathCallBack pCallBack;
  483.     DWORD               dwCallBackArg;
  484.     PDH_STATUS          CallBackStatus;
  485.     DWORD               dwDefaultDetailLevel;
  486.     LPSTR               szDialogBoxCaption;
  487. } PDH_BROWSE_DLG_CONFIG_A, *PPDH_BROWSE_DLG_CONFIG_A;
  488.  
  489. PDH_FUNCTION
  490. PdhBrowseCountersW (
  491.     IN      PPDH_BROWSE_DLG_CONFIG_W    pBrowseDlgData
  492. );
  493.  
  494. PDH_FUNCTION
  495. PdhBrowseCountersA (
  496.     IN      PPDH_BROWSE_DLG_CONFIG_A    pBrowseDlgData
  497. );
  498.  
  499. PDH_FUNCTION
  500. PdhExpandCounterPathW (
  501.     IN      LPCWSTR     szWildCardPath,
  502.     IN      LPWSTR      mszExpandedPathList,
  503.     IN      LPDWORD     pcchPathListLength
  504. );
  505.  
  506. PDH_FUNCTION
  507. PdhExpandCounterPathA (
  508.     IN      LPCSTR      szWildCardPath,
  509.     IN      LPSTR       mszExpandedPathList,
  510.     IN      LPDWORD     pcchPathListLength
  511. );
  512.  
  513. //
  514. //   Unicode/ANSI compatibility section
  515. //
  516. #ifdef UNICODE
  517. #ifndef _UNICODE
  518. #define _UNICODE
  519. #endif
  520. #endif
  521.  
  522. #ifdef _UNICODE
  523. #ifndef UNICODE
  524. #define UNICODE
  525. #endif
  526. #endif
  527.  
  528. #ifdef UNICODE
  529. // start of UNICODE definitions
  530. #define PdhAddCounter                PdhAddCounterW
  531. #define PdhGetCounterInfo           PdhGetCounterInfoW
  532. #define PDH_COUNTER_INFO            PDH_COUNTER_INFO_W
  533. #define PPDH_COUNTER_INFO            PPDH_COUNTER_INFO_W
  534. #define PdhConnectMachine           PdhConnectMachineW
  535. #define PdhEnumMachines             PdhEnumMachinesW
  536. #define PdhEnumObjects              PdhEnumObjectsW
  537. #define PdhEnumObjectItems          PdhEnumObjectItemsW
  538. #define PdhMakeCounterPath          PdhMakeCounterPathW
  539. #define PDH_COUNTER_PATH_ELEMENTS   PDH_COUNTER_PATH_ELEMENTS_W
  540. #define PPDH_COUNTER_PATH_ELEMENTS  PPDH_COUNTER_PATH_ELEMENTS_W
  541. #define PdhParseCounterPath         PdhParseCounterPathW
  542. #define PdhParseInstanceName        PdhParseInstanceNameW
  543. #define PdhValidatePath             PdhValidatePathW
  544. #define PdhGetDefaultPerfObject     PdhGetDefaultPerfObjectW
  545. #define PdhGetDefaultPerfCounter    PdhGetDefaultPerfCounterW
  546. #define PdhBrowseCounters           PdhBrowseCountersW
  547. #define PDH_BROWSE_DLG_CONFIG       PDH_BROWSE_DLG_CONFIG_W
  548. #define PPDH_BROWSE_DLG_CONFIG      PPDH_BROWSE_DLG_CONFIG_W
  549. #define PdhExpandCounterPath        PdhExpandCounterPathW
  550. // end of UNICODE definitions
  551. #else 
  552. // start of ANSI definitions
  553. #define PdhAddCounter                PdhAddCounterA
  554. #define PdhGetCounterInfo           PdhGetCounterInfoA
  555. #define PDH_COUNTER_INFO            PDH_COUNTER_INFO_A
  556. #define PPDH_COUNTER_INFO            PPDH_COUNTER_INFO_A
  557. #define PdhConnectMachine           PdhConnectMachineA
  558. #define PdhEnumMachines             PdhEnumMachinesA
  559. #define PdhEnumObjects              PdhEnumObjectsA
  560. #define PdhEnumObjectItems          PdhEnumObjectItemsA
  561. #define PdhMakeCounterPath          PdhMakeCounterPathA
  562. #define PDH_COUNTER_PATH_ELEMENTS   PDH_COUNTER_PATH_ELEMENTS_A
  563. #define PPDH_COUNTER_PATH_ELEMENTS  PPDH_COUNTER_PATH_ELEMENTS_A
  564. #define PdhParseCounterPath         PdhParseCounterPathA
  565. #define PdhParseInstanceName        PdhParseInstanceNameA
  566. #define PdhValidatePath             PdhValidatePathA
  567. #define PdhGetDefaultPerfObject     PdhGetDefaultPerfObjectA
  568. #define PdhGetDefaultPerfCounter    PdhGetDefaultPerfCounterA
  569. #define PdhBrowseCounters           PdhBrowseCountersA
  570. #define PDH_BROWSE_DLG_CONFIG       PDH_BROWSE_DLG_CONFIG_A
  571. #define PPDH_BROWSE_DLG_CONFIG      PPDH_BROWSE_DLG_CONFIG_A
  572. #define PdhExpandCounterPath        PdhExpandCounterPathA
  573. // end of ANSI definitions
  574. #endif  // UNICODE
  575.  
  576. #ifdef __cplusplus
  577. }
  578. #endif
  579.  
  580. #pragma option -b.
  581. #endif //_PDH_H_
  582.