home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / pdh.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  33KB  |  1,115 lines

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