PDH.H
上传用户:haifei
上传日期:2022-07-20
资源大小:77k
文件大小:16k
源码类别:

网络编程

开发平台:

Visual C++

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