home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / PDH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  31.7 KB  |  1,085 lines

  1. /*++
  2.  
  3. Copyright (C) 1996-1997 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. #ifndef _PDH_H_
  15. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  16. #define _PDH_H_
  17.  
  18. // system include files required for datatype and constant definitions
  19. #include <windows.h>    // necessary for data types used in this file
  20. #include <winperf.h>    // necessary for the Detail Level definitions
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25.  
  26. typedef LONG            PDH_STATUS;
  27.  
  28. #define PDH_FUNCTION    PDH_STATUS __stdcall
  29.  
  30. // version info
  31. #define PDH_CVERSION_WIN40  ((DWORD)(0x0400))
  32. // v1.1 revision of PDH -- basic log functions
  33. // v1.2 of the PDH -- adds variable instance counters
  34. // v1.3 of the PDH -- adds log service control & stubs for NT5/PDH v2 fn's
  35. #define PDH_VERSION         ((DWORD)((PDH_CVERSION_WIN40) + 0x0003))
  36.  
  37. // define severity masks
  38. #define IsSuccessSeverity(ErrorCode)    \
  39.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x00000000L) ? TRUE : FALSE)
  40. #define IsInformationalSeverity(ErrorCode)    \
  41.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x40000000L) ? TRUE : FALSE)
  42. #define IsWarningSeverity(ErrorCode)    \
  43.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x80000000L) ? TRUE : FALSE)
  44. #define IsErrorSeverity(ErrorCode)      \
  45.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0xC0000000L) ? TRUE : FALSE)
  46.  
  47. // data type definitions
  48.  
  49. typedef HANDLE  HCOUNTER;
  50. typedef HANDLE  HQUERY;
  51. typedef HANDLE  HLOG;
  52.  
  53. typedef struct _PDH_RAW_COUNTER {
  54.     DWORD       CStatus;
  55.     FILETIME    TimeStamp;
  56.     LONGLONG    FirstValue;
  57.     LONGLONG    SecondValue;
  58.     DWORD       MultiCount;
  59. } PDH_RAW_COUNTER, *PPDH_RAW_COUNTER;
  60.  
  61. typedef struct _PDH_RAW_COUNTER_ITEM_A {
  62.     LPSTR           szName;
  63.     PDH_RAW_COUNTER RawValue;
  64. } PDH_RAW_COUNTER_ITEM_A, *PPDH_RAW_COUNTER_ITEM_A;
  65.  
  66. typedef struct _PDH_RAW_COUNTER_ITEM_W {
  67.     LPWSTR          szName;
  68.     PDH_RAW_COUNTER RawValue;
  69. } PDH_RAW_COUNTER_ITEM_W, *PPDH_RAW_COUNTER_ITEM_W;
  70.  
  71. typedef struct _PDH_FMT_COUNTERVALUE {
  72.     DWORD    CStatus;
  73.     union {
  74.         LONG        longValue;
  75.         double      doubleValue;
  76.         LONGLONG    largeValue;
  77.         LPSTR       AnsiStringValue;
  78.         LPWSTR      WideStringValue;
  79.     };
  80. } PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
  81.  
  82. typedef struct _PDH_FMT_COUNTERVALUE_ITEM_A {
  83.     LPSTR                   szName;
  84.     PDH_FMT_COUNTERVALUE    FmtValue;
  85. } PDH_FMT_COUNTERVALUE_ITEM_A, *PPDH_FMT_COUNTERVALUE_ITEM_A;
  86.  
  87. typedef struct _PDH_FMT_COUNTERVALUE_ITEM_W {
  88.     LPWSTR                  szName;
  89.     PDH_FMT_COUNTERVALUE    FmtValue;
  90. } PDH_FMT_COUNTERVALUE_ITEM_W, *PPDH_FMT_COUNTERVALUE_ITEM_W;
  91.  
  92. typedef struct _PDH_STATISTICS {
  93.     DWORD                   dwFormat;
  94.     DWORD                   count;
  95.     PDH_FMT_COUNTERVALUE    min;
  96.     PDH_FMT_COUNTERVALUE    max;
  97.     PDH_FMT_COUNTERVALUE    mean;
  98. } PDH_STATISTICS, *PPDH_STATISTICS;
  99.  
  100. typedef struct _PDH_COUNTER_PATH_ELEMENTS_A {
  101.     LPSTR   szMachineName;
  102.     LPSTR   szObjectName;
  103.     LPSTR   szInstanceName;
  104.     LPSTR   szParentInstance;
  105.     DWORD   dwInstanceIndex;
  106.     LPSTR   szCounterName;
  107. } PDH_COUNTER_PATH_ELEMENTS_A, *PPDH_COUNTER_PATH_ELEMENTS_A;
  108.  
  109. typedef struct _PDH_COUNTER_PATH_ELEMENTS_W {
  110.     LPWSTR  szMachineName;
  111.     LPWSTR  szObjectName;
  112.     LPWSTR  szInstanceName;
  113.     LPWSTR  szParentInstance;
  114.     DWORD   dwInstanceIndex;
  115.     LPWSTR  szCounterName;
  116. } PDH_COUNTER_PATH_ELEMENTS_W, *PPDH_COUNTER_PATH_ELEMENTS_W;
  117.  
  118. typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A {
  119.     LPSTR   szMachineName;
  120.     GUID    ObjectGUID;
  121.     DWORD   dwItemId;
  122.     LPSTR   szInstanceName;
  123. } PDH_DATA_ITEM_PATH_ELEMENTS_A, * PPDH_DATA_ITEM_PATH_ELEMENTS_A;
  124.  
  125. typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W {
  126.     LPWSTR  szMachineName;
  127.     GUID    ObjectGUID;
  128.     DWORD   dwItemId;
  129.     LPWSTR  szInstanceName;
  130. } PDH_DATA_ITEM_PATH_ELEMENTS_W, * PPDH_DATA_ITEM_PATH_ELEMENTS_W;
  131.  
  132. typedef struct _PDH_COUNTER_INFO_A {
  133.     DWORD   dwLength;
  134.     DWORD   dwType;
  135.     DWORD   CVersion;
  136.     DWORD   CStatus;
  137.     LONG    lScale;
  138.     LONG    lDefaultScale;
  139.     DWORD   dwUserData;
  140.     DWORD   dwQueryUserData;
  141.     LPSTR   szFullPath;
  142.     union   {
  143.         PDH_DATA_ITEM_PATH_ELEMENTS_A DataItemPath;
  144.         PDH_COUNTER_PATH_ELEMENTS_A CounterPath;
  145.         struct {
  146.             LPSTR   szMachineName;
  147.             LPSTR   szObjectName;
  148.             LPSTR   szInstanceName;
  149.             LPSTR   szParentInstance;
  150.             DWORD   dwInstanceIndex;
  151.             LPSTR   szCounterName;
  152.         };
  153.     };
  154.     LPSTR   szExplainText;
  155.     DWORD   DataBuffer[1];
  156. } PDH_COUNTER_INFO_A, *PPDH_COUNTER_INFO_A;
  157.  
  158. typedef struct _PDH_COUNTER_INFO_W {
  159.     DWORD   dwLength;
  160.     DWORD   dwType;
  161.     DWORD   CVersion;
  162.     DWORD   CStatus;
  163.     LONG    lScale;
  164.     LONG    lDefaultScale;
  165.     DWORD   dwUserData;
  166.     DWORD   dwQueryUserData;
  167.     LPWSTR  szFullPath;
  168.     union   {
  169.         PDH_DATA_ITEM_PATH_ELEMENTS_W DataItemPath;
  170.         PDH_COUNTER_PATH_ELEMENTS_W CounterPath;
  171.         struct {
  172.             LPWSTR   szMachineName;
  173.             LPWSTR   szObjectName;
  174.             LPWSTR   szInstanceName;
  175.             LPWSTR   szParentInstance;
  176.             DWORD    dwInstanceIndex;
  177.             LPWSTR   szCounterName;
  178.         };
  179.     };
  180.     LPWSTR  szExplainText;
  181.     DWORD   DataBuffer[1];
  182. } PDH_COUNTER_INFO_W, *PPDH_COUNTER_INFO_W;
  183.  
  184. typedef struct _PDH_TIME_INFO {
  185.     LONGLONG    StartTime;
  186.     LONGLONG    EndTime;
  187.     DWORD       SampleCount;
  188. } PDH_TIME_INFO, *PPDH_TIME_INFO;
  189.  
  190. typedef struct _PDH_RAW_LOG_RECORD {
  191.     DWORD       dwStructureSize;
  192.     DWORD       dwRecordType;
  193.     DWORD       dwItems;
  194.     UCHAR       RawBytes[1];
  195. } PDH_RAW_LOG_RECORD, *PPDH_RAW_LOG_RECORD;
  196.  
  197. typedef struct _PDH_LOG_SERVICE_QUERY_INFO_A {
  198.     DWORD   dwSize;
  199.     DWORD   dwFlags;
  200.     DWORD   dwLogQuota;
  201.     LPSTR   szLogFileCaption;
  202.     LPSTR   szDefaultDir;
  203.     LPSTR   szBaseFileName;
  204.     DWORD   dwFileType;
  205.     DWORD   dwReserved;
  206.     union {
  207.         struct {
  208.             DWORD   PdlAutoNameInterval;
  209.             DWORD   PdlAutoNameUnits;
  210.             LPSTR   PdlCommandFilename;
  211.             LPSTR   PdlCounterList;
  212.             DWORD   PdlAutoNameFormat;
  213.             DWORD   PdlSampleInterval;
  214.             FILETIME    PdlLogStartTime;
  215.             FILETIME    PdlLogEndTime;
  216.         };
  217.         struct {
  218.             DWORD   TlNumberOfBuffers;
  219.             DWORD   TlMinimumBuffers;
  220.             DWORD   TlMaximumBuffers;
  221.             DWORD   TlFreeBuffers;
  222.             DWORD   TlBufferSize;
  223.             DWORD   TlEventsLost;
  224.             DWORD   TlLoggerThreadId;
  225.             DWORD   TlBuffersWritten;
  226.             DWORD   TlLogHandle;
  227.             LPSTR   TlLogFileName;
  228.         };
  229.     };
  230. } PDH_LOG_SERVICE_QUERY_INFO_A, *PPDH_LOG_SERVICE_QUERY_INFO_A;
  231.  
  232. typedef struct _PDH_LOG_SERVICE_QUERY_INFO_W {
  233.     DWORD   dwSize;
  234.     DWORD   dwFlags;
  235.     DWORD   dwLogQuota;
  236.     LPWSTR  szLogFileCaption;
  237.     LPWSTR  szDefaultDir;
  238.     LPWSTR  szBaseFileName;
  239.     DWORD   dwFileType;
  240.     DWORD   dwReserved;
  241.     union {
  242.         struct {
  243.             DWORD   PdlAutoNameInterval;
  244.             DWORD   PdlAutoNameUnits;
  245.             LPWSTR  PdlCommandFilename;
  246.             LPWSTR  PdlCounterList;
  247.             DWORD   PdlAutoNameFormat;
  248.             DWORD   PdlSampleInterval;
  249.             FILETIME    PdlLogStartTime;
  250.             FILETIME    PdlLogEndTime;
  251.         };
  252.         struct {
  253.             DWORD   TlNumberOfBuffers;
  254.             DWORD   TlMinimumBuffers;
  255.             DWORD   TlMaximumBuffers;
  256.             DWORD   TlFreeBuffers;
  257.             DWORD   TlBufferSize;
  258.             DWORD   TlEventsLost;
  259.             DWORD   TlLoggerThreadId;
  260.             DWORD   TlBuffersWritten;
  261.             DWORD   TlLogHandle;
  262.             LPWSTR  TlLogFileName;
  263.         };
  264.     };
  265. } PDH_LOG_SERVICE_QUERY_INFO_W, *PPDH_LOG_SERVICE_QUERY_INFO_W;
  266.  
  267. //
  268. //  Time value constants
  269. //
  270. #define MAX_TIME_VALUE      ((LONGLONG)0x7FFFFFFFFFFFFFFF)
  271. #define MIN_TIME_VALUE      ((LONGLONG)0)
  272.  
  273. // function definitions
  274.  
  275. PDH_FUNCTION
  276. PdhGetDllVersion(
  277.     IN  LPDWORD lpdwVersion
  278. );
  279.  
  280. //
  281. //  Query Functions
  282. //
  283.  
  284. PDH_FUNCTION
  285. PdhOpenQueryW (
  286.     IN      LPCWSTR     szDataSource,
  287.     IN      DWORD       dwUserData,
  288.     IN      HQUERY      *phQuery
  289. );
  290.  
  291. PDH_FUNCTION
  292. PdhOpenQueryA (
  293.     IN      LPCSTR      szDataSource,
  294.     IN      DWORD       dwUserData,
  295.     IN      HQUERY      *phQuery
  296. );
  297.  
  298. PDH_FUNCTION
  299. PdhAddCounterW (
  300.     IN      HQUERY      hQuery,
  301.     IN      LPCWSTR     szFullCounterPath,
  302.     IN      DWORD       dwUserData,
  303.     IN      HCOUNTER    *phCounter
  304. );
  305.  
  306. PDH_FUNCTION
  307. PdhAddCounterA (
  308.     IN      HQUERY      hQuery,
  309.     IN      LPCSTR      szFullCounterPath,
  310.     IN      DWORD       dwUserData,
  311.     IN      HCOUNTER    *phCounter
  312. );
  313.  
  314. PDH_FUNCTION
  315. PdhRemoveCounter (
  316.     IN      HCOUNTER    hCounter
  317. );
  318.  
  319. PDH_FUNCTION
  320. PdhCollectQueryData (
  321.     IN      HQUERY      hQuery
  322. );
  323.  
  324. PDH_FUNCTION
  325. PdhCloseQuery (
  326.     IN      HQUERY      hQuery
  327. );
  328.  
  329. //
  330. //  Counter Functions
  331. //
  332.  
  333. PDH_FUNCTION
  334. PdhGetFormattedCounterValue (
  335.     IN      HCOUNTER                hCounter,
  336.     IN      DWORD                   dwFormat,
  337.     IN      LPDWORD                 lpdwType,
  338.     IN      PPDH_FMT_COUNTERVALUE   pValue
  339. );
  340.  
  341. PDH_FUNCTION
  342. PdhGetFormattedCounterArrayA (
  343.     IN      HCOUNTER                hCounter,
  344.     IN      DWORD                   dwFormat,
  345.     IN      LPDWORD                 lpdwBufferSize,
  346.     IN      LPDWORD                 lpdwItemCount,
  347.     IN      PPDH_FMT_COUNTERVALUE_ITEM_A    ItemBuffer
  348. );
  349.         
  350. PDH_FUNCTION
  351. PdhGetFormattedCounterArrayW (
  352.     IN      HCOUNTER                hCounter,
  353.     IN      DWORD                   dwFormat,
  354.     IN      LPDWORD                 lpdwBufferSize,
  355.     IN      LPDWORD                 lpdwItemCount,
  356.     IN      PPDH_FMT_COUNTERVALUE_ITEM_W    ItemBuffer
  357. );
  358.        
  359.  
  360. // dwFormat flag values
  361. //
  362. #define PDH_FMT_RAW     ((DWORD)0x00000010)
  363. #define PDH_FMT_ANSI    ((DWORD)0x00000020)
  364. #define PDH_FMT_UNICODE ((DWORD)0x00000040)
  365. #define PDH_FMT_LONG    ((DWORD)0x00000100)
  366. #define PDH_FMT_DOUBLE  ((DWORD)0x00000200)
  367. #define PDH_FMT_LARGE   ((DWORD)0x00000400)
  368. #define PDH_FMT_NOSCALE ((DWORD)0x00001000)
  369. #define PDH_FMT_1000    ((DWORD)0x00002000)
  370. #define PDH_FMT_NODATA  ((DWORD)0x00004000)
  371.  
  372. #define PERF_DETAIL_COSTLY   ((DWORD)0x00010000)
  373. #define PERF_DETAIL_STANDARD ((DWORD)0x0000FFFF)
  374.  
  375. PDH_FUNCTION
  376. PdhGetRawCounterValue (
  377.     IN      HCOUNTER            hCounter,
  378.     IN      LPDWORD             lpdwType,
  379.     IN      PPDH_RAW_COUNTER    pValue
  380. );
  381.  
  382. PDH_FUNCTION
  383. PdhGetRawCounterArrayA (
  384.     IN      HCOUNTER                hCounter,
  385.     IN      LPDWORD                 lpdwBufferSize,
  386.     IN      LPDWORD                 lpdwItemCount,
  387.     IN      PPDH_RAW_COUNTER_ITEM_A ItemBuffer
  388. );
  389.        
  390. PDH_FUNCTION
  391. PdhGetRawCounterArrayW (
  392.     IN      HCOUNTER                hCounter,
  393.     IN      LPDWORD                 lpdwBufferSize,
  394.     IN      LPDWORD                 lpdwItemCount,
  395.     IN      PPDH_RAW_COUNTER_ITEM_W ItemBuffer
  396. );
  397.        
  398. PDH_FUNCTION
  399. PdhCalculateCounterFromRawValue (
  400.     IN      HCOUNTER                hCounter,
  401.     IN      DWORD                   dwFormat,
  402.     IN      PPDH_RAW_COUNTER        rawValue1,
  403.     IN      PPDH_RAW_COUNTER        rawValue2,
  404.     IN      PPDH_FMT_COUNTERVALUE   fmtValue
  405. );
  406.  
  407. PDH_FUNCTION
  408. PdhComputeCounterStatistics (
  409.     IN      HCOUNTER            hCounter,
  410.     IN      DWORD               dwFormat,
  411.     IN      DWORD               dwFirstEntry,
  412.     IN      DWORD               dwNumEntries,
  413.     IN      PPDH_RAW_COUNTER    lpRawValueArray,
  414.     IN      PPDH_STATISTICS     data
  415. );
  416.  
  417. PDH_FUNCTION
  418. PdhGetCounterInfoW (
  419.     IN      HCOUNTER            hCounter,
  420.     IN      BOOLEAN             bRetrieveExplainText,
  421.     IN      LPDWORD             pdwBufferSize,
  422.     IN      PPDH_COUNTER_INFO_W lpBuffer
  423. );
  424.  
  425. PDH_FUNCTION
  426. PdhGetCounterInfoA (
  427.     IN      HCOUNTER            hCounter,
  428.     IN      BOOLEAN             bRetrieveExplainText,
  429.     IN      LPDWORD             pdwBufferSize,
  430.     IN      PPDH_COUNTER_INFO_A lpBuffer
  431. );
  432.  
  433. #define PDH_MAX_SCALE    (7L)
  434. #define PDH_MIN_SCALE   (-7L)
  435.  
  436. PDH_FUNCTION
  437. PdhSetCounterScaleFactor (
  438.     IN      HCOUNTER    hCounter,
  439.     IN      LONG        lFactor
  440. );
  441. //
  442. //   Browsing and enumeration functions
  443. //
  444. PDH_FUNCTION
  445. PdhConnectMachineW (
  446.     IN      LPCWSTR  szMachineName
  447. );
  448.  
  449. PDH_FUNCTION
  450. PdhConnectMachineA (
  451.     IN      LPCSTR  szMachineName
  452. );
  453.  
  454. PDH_FUNCTION
  455. PdhEnumMachinesW (
  456.     IN      LPCWSTR szDataSource,
  457.     IN      LPWSTR  mszMachineList,
  458.     IN      LPDWORD pcchBufferSize
  459. );
  460.  
  461. PDH_FUNCTION
  462. PdhEnumMachinesA (
  463.     IN      LPCSTR   szDataSource,
  464.     IN      LPSTR    mszMachineList,
  465.     IN      LPDWORD  pcchBufferSize
  466. );
  467.  
  468. PDH_FUNCTION
  469. PdhEnumObjectsW (
  470.     IN      LPCWSTR szDataSource,
  471.     IN      LPCWSTR szMachineName,
  472.     IN      LPWSTR  mszObjectList,
  473.     IN      LPDWORD pcchBufferSize,
  474.     IN      DWORD   dwDetailLevel,
  475.     IN      BOOL    bRefresh
  476. );
  477.  
  478. PDH_FUNCTION
  479. PdhEnumObjectsA (
  480.     IN      LPCSTR  szDataSource,
  481.     IN      LPCSTR  szMachineName,
  482.     IN      LPSTR   mszObjectList,
  483.     IN      LPDWORD pcchBufferSize,
  484.     IN      DWORD   dwDetailLevel,
  485.     IN      BOOL    bRefresh
  486. );
  487.  
  488. PDH_FUNCTION
  489. PdhEnumObjectItemsW (
  490.     IN      LPCWSTR szDataSource,
  491.     IN      LPCWSTR szMachineName,
  492.     IN      LPCWSTR szObjectName,
  493.     IN      LPWSTR  mszCounterList,
  494.     IN      LPDWORD pcchCounterListLength,
  495.     IN      LPWSTR  mszInstanceList,
  496.     IN      LPDWORD pcchInstanceListLength,
  497.     IN      DWORD   dwDetailLevel,
  498.     IN      DWORD   dwFlags
  499. );
  500.  
  501. PDH_FUNCTION
  502. PdhEnumObjectItemsA (
  503.     IN      LPCSTR  szDataSource,
  504.     IN      LPCSTR  szMachineName,
  505.     IN      LPCSTR  szObjectName,
  506.     IN      LPSTR   mszCounterList,
  507.     IN      LPDWORD pcchCounterListLength,
  508.     IN      LPSTR   mszInstanceList,
  509.     IN      LPDWORD pcchInstanceListLength,
  510.     IN      DWORD   dwDetailLevel,
  511.     IN      DWORD   dwFlags
  512. );
  513.  
  514. PDH_FUNCTION
  515. PdhMakeCounterPathW (
  516.     IN      PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
  517.     IN      LPWSTR                      szFullPathBuffer,
  518.     IN      LPDWORD                     pcchBufferSize,
  519.     IN      DWORD                       dwFlags
  520. );
  521.  
  522. PDH_FUNCTION
  523. PdhMakeCounterPathA (
  524.     IN      PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
  525.     IN      LPSTR                       szFullPathBuffer,
  526.     IN      LPDWORD                     pcchBufferSize,
  527.     IN      DWORD                       dwFlags
  528. );
  529.  
  530. PDH_FUNCTION
  531. PdhParseCounterPathW (
  532.     IN      LPCWSTR                     szFullPathBuffer,
  533.     IN      PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
  534.     IN      LPDWORD                     pdwBufferSize,
  535.     IN      DWORD                       dwFlags
  536. );
  537.  
  538. PDH_FUNCTION
  539. PdhParseCounterPathA (
  540.     IN      LPCSTR                      szFullPathBuffer,
  541.     IN      PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
  542.     IN      LPDWORD                     pdwBufferSize,
  543.     IN      DWORD                       dwFlags
  544. );
  545.  
  546. PDH_FUNCTION
  547. PdhParseInstanceNameW (
  548.     IN      LPCWSTR szInstanceString,
  549.     IN      LPWSTR  szInstanceName,
  550.     IN      LPDWORD pcchInstanceNameLength,
  551.     IN      LPWSTR  szParentName,
  552.     IN      LPDWORD pcchParentNameLength,
  553.     IN      LPDWORD lpIndex
  554. );
  555.  
  556. PDH_FUNCTION
  557. PdhParseInstanceNameA (
  558.     IN      LPCSTR  szInstanceString,
  559.     IN      LPSTR   szInstanceName,
  560.     IN      LPDWORD pcchInstanceNameLength,
  561.     IN      LPSTR   szParentName,
  562.     IN      LPDWORD pcchParentNameLength,
  563.     IN      LPDWORD lpIndex
  564. );
  565.  
  566. PDH_FUNCTION
  567. PdhValidatePathW (
  568.     IN      LPCWSTR szFullPathBuffer
  569. );
  570.  
  571. PDH_FUNCTION
  572. PdhValidatePathA (
  573.     IN      LPCSTR  szFullPathBuffer
  574. );
  575.  
  576. PDH_FUNCTION
  577. PdhGetDefaultPerfObjectW (
  578.     IN      LPCWSTR szDataSource,
  579.     IN      LPCWSTR szMachineName,
  580.     IN      LPWSTR  szDefaultObjectName,
  581.     IN      LPDWORD pcchBufferSize
  582. );
  583.  
  584. PDH_FUNCTION
  585. PdhGetDefaultPerfObjectA (
  586.     IN      LPCSTR  szDataSource,
  587.     IN      LPCSTR  szMachineName,
  588.     IN      LPSTR   szDefaultObjectName,
  589.     IN      LPDWORD pcchBufferSize
  590. );
  591.  
  592. PDH_FUNCTION
  593. PdhGetDefaultPerfCounterW (
  594.     IN      LPCWSTR szDataSource,
  595.     IN      LPCWSTR szMachineName,
  596.     IN      LPCWSTR szObjectName,
  597.     IN      LPWSTR  szDefaultCounterName,
  598.     IN      LPDWORD pcchBufferSize
  599. );
  600.  
  601. PDH_FUNCTION
  602. PdhGetDefaultPerfCounterA (
  603.     IN      LPCSTR  szDataSource,
  604.     IN      LPCSTR  szMachineName,
  605.     IN      LPCSTR  szObjectName,
  606.     IN      LPSTR   szDefaultCounterName,
  607.     IN      LPDWORD pcchBufferSize
  608. );
  609.  
  610. typedef PDH_STATUS (__stdcall *CounterPathCallBack)(DWORD);
  611.  
  612. typedef struct _BrowseDlgConfig_W {
  613.     // Configuration flags
  614.     DWORD   bIncludeInstanceIndex:1,
  615.             bSingleCounterPerAdd:1,
  616.             bSingleCounterPerDialog:1,
  617.             bLocalCountersOnly:1,
  618.             bWildCardInstances:1,
  619.             bHideDetailBox:1,
  620.             bInitializePath:1,
  621.             bDisableMachineSelection:1,
  622.             bIncludeCostlyObjects:1,
  623.             bReserved:23;
  624.  
  625.     HWND                hWndOwner;
  626.     LPWSTR              szDataSource;
  627.     LPWSTR              szReturnPathBuffer;
  628.     DWORD               cchReturnPathLength;
  629.     CounterPathCallBack pCallBack;
  630.     DWORD               dwCallBackArg;
  631.     PDH_STATUS          CallBackStatus;
  632.     DWORD               dwDefaultDetailLevel;
  633.     LPWSTR              szDialogBoxCaption;
  634. } PDH_BROWSE_DLG_CONFIG_W, *PPDH_BROWSE_DLG_CONFIG_W;
  635.  
  636. typedef struct _BrowseDlgConfig_A {
  637.     // Configuration flags
  638.     DWORD   bIncludeInstanceIndex:1,
  639.             bSingleCounterPerAdd:1,
  640.             bSingleCounterPerDialog:1,
  641.             bLocalCountersOnly:1,
  642.             bWildCardInstances:1,
  643.             bHideDetailBox:1,
  644.             bInitializePath:1,
  645.             bDisableMachineSelection:1,
  646.             bIncludeCostlyObjects:1,
  647.             bReserved:23;
  648.  
  649.     HWND                hWndOwner;
  650.     LPSTR               szDataSource;
  651.     LPSTR               szReturnPathBuffer;
  652.     DWORD               cchReturnPathLength;
  653.     CounterPathCallBack pCallBack;
  654.     DWORD               dwCallBackArg;
  655.     PDH_STATUS          CallBackStatus;
  656.     DWORD               dwDefaultDetailLevel;
  657.     LPSTR               szDialogBoxCaption;
  658. } PDH_BROWSE_DLG_CONFIG_A, *PPDH_BROWSE_DLG_CONFIG_A;
  659.  
  660. PDH_FUNCTION
  661. PdhBrowseCountersW (
  662.     IN      PPDH_BROWSE_DLG_CONFIG_W    pBrowseDlgData
  663. );
  664.  
  665. PDH_FUNCTION
  666. PdhBrowseCountersA (
  667.     IN      PPDH_BROWSE_DLG_CONFIG_A    pBrowseDlgData
  668. );
  669.  
  670. PDH_FUNCTION
  671. PdhExpandCounterPathW (
  672.     IN      LPCWSTR     szWildCardPath,
  673.     IN      LPWSTR      mszExpandedPathList,
  674.     IN      LPDWORD     pcchPathListLength
  675. );
  676.  
  677. PDH_FUNCTION
  678. PdhExpandCounterPathA (
  679.     IN      LPCSTR      szWildCardPath,
  680.     IN      LPSTR       mszExpandedPathList,
  681.     IN      LPDWORD     pcchPathListLength
  682. );
  683.  
  684. //
  685. //  v2.0 functions
  686. //
  687. PDH_FUNCTION
  688. PdhLookupPerfNameByIndexW (
  689.     LPCWSTR szMachineName,
  690.     DWORD   dwNameIndex,
  691.     LPWSTR  szNameBuffer,
  692.     LPDWORD pcchNameBufferSize
  693. );
  694.  
  695. PDH_FUNCTION
  696. PdhLookupPerfNameByIndexA (
  697.     LPCSTR  szMachineName,
  698.     DWORD   dwNameIndex,
  699.     LPSTR   szNameBuffer,
  700.     LPDWORD pcchNameBufferSize
  701. );
  702.  
  703. PDH_FUNCTION
  704. PdhLookupPerfIndexByNameW (
  705.     LPCWSTR szMachineName,
  706.     LPCWSTR szNameBuffer,
  707.     LPDWORD pdwIndex
  708. );
  709.  
  710. PDH_FUNCTION
  711. PdhLookupPerfIndexByNameA (
  712.     LPCSTR  szMachineName,
  713.     LPCSTR  szNameBuffer,
  714.     LPDWORD pdwIndex
  715. );
  716.  
  717. //
  718. //   Logging Functions
  719. //
  720.  
  721. #define PDH_LOG_READ_ACCESS     ((DWORD)0x00010000)
  722. #define PDH_LOG_WRITE_ACCESS    ((DWORD)0x00020000)
  723. #define PDH_LOG_ACCESS_MASK     ((DWORD)0x000F0000)
  724.  
  725. #define PDH_LOG_CREATE_NEW      ((DWORD)0x00000001)
  726. #define PDH_LOG_CREATE_ALWAYS   ((DWORD)0x00000002)
  727. #define PDH_LOG_OPEN_ALWAYS     ((DWORD)0x00000003)
  728. #define PDH_LOG_OPEN_EXISTING   ((DWORD)0x00000004)
  729. #define PDH_LOG_CREATE_MASK     ((DWORD)0x0000000F)
  730.  
  731. #define PDH_LOG_OPT_USER_STRING ((DWORD)0x01000000)
  732. #define PDH_LOG_OPT_MASK        ((DWORD)0x0F000000)
  733.  
  734. #define PDH_LOG_TYPE_UNDEFINED      0
  735. #define PDH_LOG_TYPE_CSV            1
  736. #define PDH_LOG_TYPE_TSV            2
  737. #define PDH_LOG_TYPE_BINARY         3
  738. #define PDH_LOG_TYPE_TRACE_KERNEL   4
  739. #define PDH_LOG_TYPE_TRACE_GENERIC  5
  740.  
  741. PDH_FUNCTION
  742. PdhOpenLogW (
  743.     IN      LPCWSTR szLogFileName,
  744.     IN      DWORD   dwAccessFlags,
  745.     IN      LPDWORD lpdwLogType,
  746.     IN      HQUERY  hQuery,
  747.     IN      DWORD   dwMaxRecords,
  748.     IN      LPCWSTR szUserCaption,
  749.     IN      HLOG    *phLog
  750. );
  751.  
  752. PDH_FUNCTION
  753. PdhOpenLogA (
  754.     IN      LPCSTR  szLogFileName,
  755.     IN      DWORD   dwAccessFlags,
  756.     IN      LPDWORD lpdwLogType,
  757.     IN      HQUERY  hQuery,
  758.     IN      DWORD   dwMaxRecords,
  759.     IN      LPCSTR  szUserCaption,
  760.     IN      HLOG    *phLog
  761. );
  762.  
  763. PDH_FUNCTION
  764. PdhUpdateLogW (
  765.     IN      HLOG    hLog,
  766.     IN      LPCWSTR szUserString
  767. );
  768.  
  769. PDH_FUNCTION
  770. PdhUpdateLogA (
  771.     IN      HLOG    hLog,
  772.     IN      LPCSTR  szUserString
  773. );
  774.  
  775. PDH_FUNCTION
  776. PdhGetLogFileSize (
  777.     IN  HLOG        hLog,
  778.     IN  LONGLONG    *llSize
  779. );
  780.  
  781. PDH_FUNCTION
  782. PdhCloseLog(
  783.     IN  HLOG        hLog,
  784.     IN  DWORD       dwFlags
  785. );
  786.  
  787. #define PDH_FLAGS_CLOSE_QUERY   ((DWORD)0x00000001)
  788. //
  789. //  Data source selection dialog
  790. //
  791. #define PDH_FLAGS_FILE_BROWSER_ONLY ((DWORD)0x00000001)
  792.  
  793. PDH_FUNCTION
  794. PdhSelectDataSourceW (
  795.     IN  HWND    hWndOwner,
  796.     IN  DWORD   dwFlags,
  797.     IN  LPWSTR  szDataSource,
  798.     IN  LPDWORD pcchBufferLength
  799. );
  800.  
  801. PDH_FUNCTION
  802. PdhSelectDataSourceA (
  803.     IN  HWND    hWndOwner,
  804.     IN  DWORD   dwFlags,
  805.     IN  LPSTR   szDataSource,
  806.     IN  LPDWORD pcchBufferLength
  807. );
  808.  
  809. BOOL
  810. PdhIsRealTimeQuery (
  811.     IN  HQUERY  hQuery
  812. );
  813.  
  814. PDH_FUNCTION
  815. PdhSetQueryTimeRange (
  816.     IN      HQUERY          hQuery,
  817.     IN      PPDH_TIME_INFO  pInfo
  818. );
  819.  
  820. PDH_FUNCTION
  821. PdhGetDataSourceTimeRangeW (
  822.     IN      LPCWSTR         szDataSource,
  823.     IN      LPDWORD         pdwNumEntries,
  824.     IN      PPDH_TIME_INFO  pInfo,
  825.     IN      LPDWORD         pdwBufferSize
  826. );
  827.  
  828. PDH_FUNCTION
  829. PdhGetDataSourceTimeRangeA (
  830.     IN      LPCSTR          szDataSource,
  831.     IN      LPDWORD         pdwNumEntries,
  832.     IN      PPDH_TIME_INFO  pInfo,
  833.     IN      LPDWORD         dwBufferSize
  834. );
  835.  
  836. PDH_FUNCTION
  837. PdhCollectQueryDataEx (
  838.     IN      HQUERY      hQuery,
  839.     IN      DWORD       dwIntervalTime,
  840.     IN      HANDLE      hNewDataEvent
  841. );
  842.  
  843. PDH_FUNCTION
  844. PdhFormatFromRawValue (
  845.     IN      DWORD               dwCounterType,
  846.     IN      DWORD               dwFormat,
  847.     IN      LONGLONG            *pTimeBase,
  848.     IN      PPDH_RAW_COUNTER    pRawValue1,
  849.     IN      PPDH_RAW_COUNTER    pRawValue2,
  850.     IN      PPDH_FMT_COUNTERVALUE   pFmtValue
  851. );
  852.  
  853. PDH_FUNCTION
  854. PdhGetCounterTimeBase (
  855.     IN  HCOUNTER    hCounter,
  856.     IN  LONGLONG    *pTimeBase
  857. );
  858.  
  859. PDH_FUNCTION
  860. PdhEncodeWmiPathA (
  861.     IN  LPCSTR                          szFullPathBufer,
  862.     IN  PPDH_DATA_ITEM_PATH_ELEMENTS_A  pDataItemPathElements,
  863.     IN  LPDWORD                         pdwBuferSize,
  864.     IN  LANGID                          LangId,
  865.     IN  DWORD                           dwFlags
  866. );
  867.  
  868. PDH_FUNCTION
  869. PdhEncodeWmiPathW (
  870.     IN  LPCWSTR                         szFullPathBufer,
  871.     IN  PPDH_DATA_ITEM_PATH_ELEMENTS_W  pDataItemPathElements,
  872.     IN  LPDWORD                         pdwBuferSize,
  873.     IN  LANGID                          LangId,
  874.     IN  DWORD                           dwFlags
  875. );
  876.  
  877. PDH_FUNCTION
  878. PdhDecodeWmiPathA (
  879.     IN  PPDH_DATA_ITEM_PATH_ELEMENTS_A  pDataItemPathElements,
  880.     IN  PPDH_COUNTER_PATH_ELEMENTS_A    pCounterPathElements,
  881.     IN  LPDWORD                         pdwBufferSize,
  882.     IN  LANGID                          LangId,
  883.     IN  DWORD                           dwFlags
  884. );
  885.  
  886.  
  887. PDH_FUNCTION
  888. PdhDecodeWmiPathW (
  889.     IN  PPDH_DATA_ITEM_PATH_ELEMENTS_W  pDataItemPathElements,
  890.     IN  PPDH_COUNTER_PATH_ELEMENTS_W    pCounterPathElements,
  891.     IN  LPDWORD                         pdwBufferSize,
  892.     IN  LANGID                          LangId,
  893.     IN  DWORD                           dwFlags
  894. );
  895.  
  896. PDH_FUNCTION
  897. PdhReadRawLogRecord (
  898.     IN  HLOG                    hLog,
  899.     IN  FILETIME                ftRecord,
  900.     IN  PPDH_RAW_LOG_RECORD     pRawLogRecord,
  901.     IN  LPDWORD                 pdwBufferLength
  902. );
  903.  
  904. // flags for the log service api's
  905. #define PDH_LOGSVC_NO_WAIT          ((DWORD)0x80000000)
  906. #define PDH_LOGSVC_ALL_QUERIES      ((DWORD)0x00000001)
  907. #define PDH_LOGSVC_TRACE_LOG        ((DWORD)0x00000002)
  908.  
  909. #define PDH_LOGSVC_CMD_START        ((DWORD)0x00000010)
  910. #define PDH_LOGSVC_CMD_STOP         ((DWORD)0x00000020)
  911.  
  912. #define PDH_LOGSVC_CTRL_ADD         ((DWORD)0x00000100)
  913. #define PDH_LOGSVC_CTRL_REMOVE      ((DWORD)0x00000200)
  914. #define PDH_LOGSVC_CTRL_INFO        ((DWORD)0x00000400)
  915.  
  916. #define PDH_LOGSVC_STATUS_RUNNING   ((DWORD)0x00001000)
  917. #define PDH_LOGSVC_STATUS_STOPPED   ((DWORD)0x00002000)
  918. #define PDH_LOGSVC_STATUS_PAUSED    ((DWORD)0x00004000)
  919. #define PDH_LOGSVC_STATUS_ERROR     ((DWORD)0x00008000)
  920. #define PDH_LOGSVC_STATUS_PENDING   ((DWORD)0x00010000)
  921.  
  922. #define PDH_LOGSVC_NAME_UNDEFINED  ((DWORD)-1)
  923. #define PDH_LOGSVC_NAME_MMDDHH     ((DWORD)0)
  924. #define PDH_LOGSVC_NAME_NNNNNN     ((DWORD)1)
  925. #define PDH_LOGSVC_NAME_YYDDD      ((DWORD)2)
  926. #define PDH_LOGSVC_NAME_YYMM       ((DWORD)3)
  927. #define PDH_LOGSVC_NAME_YYMMDD     ((DWORD)4)
  928. #define PDH_LOGSVC_NAME_YYMMDDHH   ((DWORD)5)
  929.  
  930. #define PDH_LOGSVC_RENAME_UNDEFINED ((DWORD)-1)
  931. #define PDH_LOGSVC_RENAME_HOURS    ((DWORD)0)
  932. #define PDH_LOGSVC_RENAME_DAYS     ((DWORD)1)
  933. #define PDH_LOGSVC_RENAME_MONTHS   ((DWORD)2)
  934. #define PDH_LOGSVC_RENAME_KBYTES   ((DWORD)3)
  935. #define PDH_LOGSVC_RENAME_MBYTES   ((DWORD)4)
  936.  
  937. PDH_FUNCTION
  938. PdhLogServiceCommandA (
  939.     IN  LPCSTR          szMachineName,
  940.     IN  LPCSTR          szQueryName,
  941.     IN  DWORD           dwFlags,
  942.     IN  LPDWORD         pdwStatus
  943. );
  944.  
  945. PDH_FUNCTION
  946. PdhLogServiceCommandW (
  947.     IN  LPCWSTR         szMachineName,
  948.     IN  LPCWSTR         szQueryName,
  949.     IN  DWORD           dwFlags,
  950.     IN  LPDWORD         pdwStatus
  951. );
  952.  
  953. PDH_FUNCTION
  954. PdhLogServiceControlA (
  955.     IN  LPCSTR          szMachineName,
  956.     IN  LPCSTR          szQueryName,
  957.     IN  DWORD           dwFlags,
  958.     IN  PPDH_LOG_SERVICE_QUERY_INFO_A pInfoBuffer,
  959.     IN  LPDWORD         pdwBufferSize
  960. );
  961.  
  962. PDH_FUNCTION
  963. PdhLogServiceControlW (
  964.     IN  LPCWSTR         szMachineName,
  965.     IN  LPCWSTR         szQueryName,
  966.     IN  DWORD           dwFlags,
  967.     IN  PPDH_LOG_SERVICE_QUERY_INFO_W pInfoBuffer,
  968.     IN  LPDWORD         pdwBufferSize
  969. );
  970. //
  971. //   Unicode/ANSI compatibility section
  972. //
  973. #ifdef UNICODE
  974. #ifndef _UNICODE
  975. #define _UNICODE
  976. #endif
  977. #endif
  978.  
  979. #ifdef _UNICODE
  980. #ifndef UNICODE
  981. #define UNICODE
  982. #endif
  983. #endif
  984.  
  985. #ifdef UNICODE
  986. // start of UNICODE definitions
  987. #define PdhOpenQuery                PdhOpenQueryW
  988. #define PdhAddCounter                PdhAddCounterW
  989. #define PdhGetCounterInfo           PdhGetCounterInfoW
  990. #define PDH_COUNTER_INFO            PDH_COUNTER_INFO_W
  991. #define PPDH_COUNTER_INFO            PPDH_COUNTER_INFO_W
  992. #define PdhConnectMachine           PdhConnectMachineW
  993. #define PdhEnumMachines             PdhEnumMachinesW
  994. #define PdhEnumObjects              PdhEnumObjectsW
  995. #define PdhEnumObjectItems          PdhEnumObjectItemsW
  996. #define PdhMakeCounterPath          PdhMakeCounterPathW
  997. #define PDH_COUNTER_PATH_ELEMENTS   PDH_COUNTER_PATH_ELEMENTS_W
  998. #define PPDH_COUNTER_PATH_ELEMENTS  PPDH_COUNTER_PATH_ELEMENTS_W
  999. #define PdhParseCounterPath         PdhParseCounterPathW
  1000. #define PdhParseInstanceName        PdhParseInstanceNameW
  1001. #define PdhValidatePath             PdhValidatePathW
  1002. #define PdhGetDefaultPerfObject     PdhGetDefaultPerfObjectW
  1003. #define PdhGetDefaultPerfCounter    PdhGetDefaultPerfCounterW
  1004. #define PdhBrowseCounters           PdhBrowseCountersW
  1005. #define PDH_BROWSE_DLG_CONFIG       PDH_BROWSE_DLG_CONFIG_W
  1006. #define PPDH_BROWSE_DLG_CONFIG      PPDH_BROWSE_DLG_CONFIG_W
  1007. #define PdhExpandCounterPath        PdhExpandCounterPathW
  1008. // v2.0 functions
  1009. #define PDH_FMT_COUNTERVALUE_ITEM   PDH_FMT_COUNTERVALUE_ITEM_W
  1010. #define PPDH_FMT_COUNTERVALUE_ITEM  PPDH_FMT_COUNTERVALUE_ITEM_W
  1011. #define PDH_RAW_COUNTER_ITEM        PDH_RAW_COUNTER_ITEM_W
  1012. #define PPDH_RAW_COUNTER_ITEM       PPDH_RAW_COUNTER_ITEM_W
  1013. #define PdhGetFormattedCounterArray PdhGetFormattedCounterArrayW
  1014. #define PdhGetRawCounterArray       PdhGetRawCounterArrayW
  1015. #define PdhLookupPerfNameByIndex    PdhLookupPerfNameByIndexW
  1016. #define PdhLookupIndexByPerfName    PdhLookupIndexByPerfNameW
  1017. #define PdhOpenLog                  PdhOpenLogW
  1018. #define PdhUpdateLog                PdhUpdateLogW
  1019. #define PdhSelectDataSource         PdhSelectDataSourceW
  1020. #define PdhGetDataSourceTimeRange   PdhGetDataSourceTimeRangeW
  1021. #define PDH_DATA_ITEM_PATH_ELEMENTS PDH_DATA_ITEM_PATH_ELEMENTS_W
  1022. #define PPDH_DATA_ITEM_PATH_ELEMENTS PPDH_DATA_ITEM_PATH_ELEMENTS_W
  1023. #define PdhEncodeWmiPath            PdhEncodeWmiPathW
  1024. #define PdhDecodeWmiPath            PdhDecodeWmiPathW
  1025. #define PDH_LOG_SERVICE_QUERY_INFO  PDH_LOG_SERVICE_QUERY_INFO_W
  1026. #define PPDH_LOG_SERVICE_QUERY_INFO PPDH_LOG_SERVICE_QUERY_INFO_W
  1027. #define PdhLogServiceControl        PdhLogServiceControlW
  1028. #define PdhLogServiceQuery          PdhLogServiceQueryW
  1029.  
  1030. // end of UNICODE definitions
  1031. #else
  1032. // start of ANSI definitions
  1033. #define PdhOpenQuery                PdhOpenQueryA
  1034. #define PdhAddCounter                PdhAddCounterA
  1035. #define PdhGetCounterInfo           PdhGetCounterInfoA
  1036. #define PDH_COUNTER_INFO            PDH_COUNTER_INFO_A
  1037. #define PPDH_COUNTER_INFO            PPDH_COUNTER_INFO_A
  1038. #define PdhConnectMachine           PdhConnectMachineA
  1039. #define PdhEnumMachines             PdhEnumMachinesA
  1040. #define PdhEnumObjects              PdhEnumObjectsA
  1041. #define PdhEnumObjectItems          PdhEnumObjectItemsA
  1042. #define PdhMakeCounterPath          PdhMakeCounterPathA
  1043. #define PDH_COUNTER_PATH_ELEMENTS   PDH_COUNTER_PATH_ELEMENTS_A
  1044. #define PPDH_COUNTER_PATH_ELEMENTS  PPDH_COUNTER_PATH_ELEMENTS_A
  1045. #define PdhParseCounterPath         PdhParseCounterPathA
  1046. #define PdhParseInstanceName        PdhParseInstanceNameA
  1047. #define PdhValidatePath             PdhValidatePathA
  1048. #define PdhGetDefaultPerfObject     PdhGetDefaultPerfObjectA
  1049. #define PdhGetDefaultPerfCounter    PdhGetDefaultPerfCounterA
  1050. #define PdhBrowseCounters           PdhBrowseCountersA
  1051. #define PDH_BROWSE_DLG_CONFIG       PDH_BROWSE_DLG_CONFIG_A
  1052. #define PPDH_BROWSE_DLG_CONFIG      PPDH_BROWSE_DLG_CONFIG_A
  1053. #define PdhExpandCounterPath        PdhExpandCounterPathA
  1054. // v2.0 functions
  1055. #define PDH_FMT_COUNTERVALUE_ITEM   PDH_FMT_COUNTERVALUE_ITEM_A
  1056. #define PPDH_FMT_COUNTERVALUE_ITEM  PPDH_FMT_COUNTERVALUE_ITEM_A
  1057. #define PDH_RAW_COUNTER_ITEM        PDH_RAW_COUNTER_ITEM_A 
  1058. #define PPDH_RAW_COUNTER_ITEM       PPDH_RAW_COUNTER_ITEM_A
  1059. #define PdhGetFormattedCounterArray PdhGetFormattedCounterArrayA
  1060. #define PdhGetRawCounterArray       PdhGetRawCounterArrayA
  1061. #define PdhLookupPerfNameByIndex    PdhLookupPerfNameByIndexA
  1062. #define PdhLookupIndexByPerfName    PdhLookupIndexByPerfNameA
  1063. #define PdhOpenLog                  PdhOpenLogA
  1064. #define PdhUpdateLog                PdhUpdateLogA
  1065. #define PdhSelectDataSource         PdhSelectDataSourceA
  1066. #define PdhGetDataSourceTimeRange   PdhGetDataSourceTimeRangeA
  1067. #define PDH_DATA_ITEM_PATH_ELEMENTS PDH_DATA_ITEM_PATH_ELEMENTS_A
  1068. #define PPDH_DATA_ITEM_PATH_ELEMENTS PPDH_DATA_ITEM_PATH_ELEMENTS_A
  1069. #define PdhEncodeWmiPath            PdhEncodeWmiPathA
  1070. #define PdhDecodeWmiPath            PdhDecodeWmiPathA
  1071. #define PDH_LOG_SERVICE_QUERY_INFO  PDH_LOG_SERVICE_QUERY_INFO_A
  1072. #define PPDH_LOG_SERVICE_QUERY_INFO PPDH_LOG_SERVICE_QUERY_INFO_A
  1073. #define PdhLogServiceControl        PdhLogServiceControlA
  1074. #define PdhLogServiceQuery          PdhLogServiceQueryA
  1075.  
  1076. // end of ANSI definitions
  1077. #endif  // UNICODE
  1078.  
  1079. #ifdef __cplusplus
  1080. }
  1081. #endif
  1082.  
  1083. #pragma option pop /*P_O_Pop*/
  1084. #endif //_PDH_H_
  1085.