home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2004 September / maximum-cd-2004-09.iso / Software / Extras / nbeep03.exe / Source / ipdh.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-02  |  26.3 KB  |  986 lines

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