pdh.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _PDH_H_
  7. #define _PDH_H_
  8. #include <_mingw_unicode.h>
  9. #include <windows.h>
  10. #include <winperf.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. typedef LONG PDH_STATUS;
  15. #define PDH_FUNCTION PDH_STATUS WINAPI
  16. #define PDH_CVERSION_WIN40 ((DWORD)(0x0400))
  17. #define PDH_CVERSION_WIN50 ((DWORD)(0x0500))
  18. #define PDH_VERSION ((DWORD)((PDH_CVERSION_WIN50) + 0x0003))
  19. #define IsSuccessSeverity(ErrorCode) ((!((DWORD)(ErrorCode) & 0xC0000000)) ? TRUE : FALSE)
  20. #define IsInformationalSeverity(ErrorCode) ((((DWORD)(ErrorCode) & 0xC0000000)==(DWORD)0x40000000) ? TRUE : FALSE)
  21. #define IsWarningSeverity(ErrorCode) ((((DWORD)(ErrorCode) & 0xC0000000)==(DWORD)0x80000000) ? TRUE : FALSE)
  22. #define IsErrorSeverity(ErrorCode) ((((DWORD)(ErrorCode) & 0xC0000000)==(DWORD)0xC0000000) ? TRUE : FALSE)
  23. #define MAX_COUNTER_PATH 256
  24. #define PDH_MAX_COUNTER_NAME 1024
  25. #define PDH_MAX_INSTANCE_NAME 1024
  26. #define PDH_MAX_COUNTER_PATH 2048
  27. #define PDH_MAX_DATASOURCE_PATH 1024
  28. typedef HANDLE PDH_HCOUNTER;
  29. typedef HANDLE PDH_HQUERY;
  30. typedef HANDLE PDH_HLOG;
  31. typedef PDH_HCOUNTER HCOUNTER;
  32. typedef PDH_HQUERY HQUERY;
  33. #ifndef _LMHLOGDEFINED_
  34. typedef PDH_HLOG HLOG;
  35. #endif
  36. #ifdef INVALID_HANDLE_VALUE
  37. #undef INVALID_HANDLE_VALUE
  38. #define INVALID_HANDLE_VALUE ((HANDLE)((LONG_PTR)-1))
  39. #endif
  40. #define H_REALTIME_DATASOURCE NULL
  41. #define H_WBEM_DATASOURCE INVALID_HANDLE_VALUE
  42. typedef struct _PDH_RAW_COUNTER {
  43. DWORD CStatus;
  44. FILETIME TimeStamp;
  45. LONGLONG FirstValue;
  46. LONGLONG SecondValue;
  47. DWORD MultiCount;
  48. } PDH_RAW_COUNTER,*PPDH_RAW_COUNTER;
  49. typedef struct _PDH_RAW_COUNTER_ITEM_A {
  50. LPSTR szName;
  51. PDH_RAW_COUNTER RawValue;
  52. } PDH_RAW_COUNTER_ITEM_A,*PPDH_RAW_COUNTER_ITEM_A;
  53. typedef struct _PDH_RAW_COUNTER_ITEM_W {
  54. LPWSTR szName;
  55. PDH_RAW_COUNTER RawValue;
  56. } PDH_RAW_COUNTER_ITEM_W,*PPDH_RAW_COUNTER_ITEM_W;
  57. typedef struct _PDH_FMT_COUNTERVALUE {
  58. DWORD CStatus;
  59. __C89_NAMELESS union {
  60. LONG longValue;
  61. double doubleValue;
  62. LONGLONG largeValue;
  63. LPCSTR AnsiStringValue;
  64. LPCWSTR WideStringValue;
  65. };
  66. } PDH_FMT_COUNTERVALUE,*PPDH_FMT_COUNTERVALUE;
  67. typedef struct _PDH_FMT_COUNTERVALUE_ITEM_A {
  68. LPSTR szName;
  69. PDH_FMT_COUNTERVALUE FmtValue;
  70. } PDH_FMT_COUNTERVALUE_ITEM_A,*PPDH_FMT_COUNTERVALUE_ITEM_A;
  71. typedef struct _PDH_FMT_COUNTERVALUE_ITEM_W {
  72. LPWSTR szName;
  73. PDH_FMT_COUNTERVALUE FmtValue;
  74. } PDH_FMT_COUNTERVALUE_ITEM_W,*PPDH_FMT_COUNTERVALUE_ITEM_W;
  75. typedef struct _PDH_STATISTICS {
  76. DWORD dwFormat;
  77. DWORD count;
  78. PDH_FMT_COUNTERVALUE min;
  79. PDH_FMT_COUNTERVALUE max;
  80. PDH_FMT_COUNTERVALUE mean;
  81. } PDH_STATISTICS,*PPDH_STATISTICS;
  82. typedef struct _PDH_COUNTER_PATH_ELEMENTS_A {
  83. LPSTR szMachineName;
  84. LPSTR szObjectName;
  85. LPSTR szInstanceName;
  86. LPSTR szParentInstance;
  87. DWORD dwInstanceIndex;
  88. LPSTR szCounterName;
  89. } PDH_COUNTER_PATH_ELEMENTS_A,*PPDH_COUNTER_PATH_ELEMENTS_A;
  90. typedef struct _PDH_COUNTER_PATH_ELEMENTS_W {
  91. LPWSTR szMachineName;
  92. LPWSTR szObjectName;
  93. LPWSTR szInstanceName;
  94. LPWSTR szParentInstance;
  95. DWORD dwInstanceIndex;
  96. LPWSTR szCounterName;
  97. } PDH_COUNTER_PATH_ELEMENTS_W,*PPDH_COUNTER_PATH_ELEMENTS_W;
  98. typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A {
  99. LPSTR szMachineName;
  100. GUID ObjectGUID;
  101. DWORD dwItemId;
  102. LPSTR szInstanceName;
  103. } PDH_DATA_ITEM_PATH_ELEMENTS_A,*PPDH_DATA_ITEM_PATH_ELEMENTS_A;
  104. typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W {
  105. LPWSTR szMachineName;
  106. GUID ObjectGUID;
  107. DWORD dwItemId;
  108. LPWSTR szInstanceName;
  109. } PDH_DATA_ITEM_PATH_ELEMENTS_W,*PPDH_DATA_ITEM_PATH_ELEMENTS_W;
  110. typedef struct _PDH_COUNTER_INFO_A {
  111. DWORD dwLength;
  112. DWORD dwType;
  113. DWORD CVersion;
  114. DWORD CStatus;
  115. LONG lScale;
  116. LONG lDefaultScale;
  117. DWORD_PTR dwUserData;
  118. DWORD_PTR dwQueryUserData;
  119. LPSTR szFullPath;
  120. __C89_NAMELESS union {
  121. PDH_DATA_ITEM_PATH_ELEMENTS_A DataItemPath;
  122. PDH_COUNTER_PATH_ELEMENTS_A CounterPath;
  123. __C89_NAMELESS struct {
  124. LPSTR szMachineName;
  125. LPSTR szObjectName;
  126. LPSTR szInstanceName;
  127. LPSTR szParentInstance;
  128. DWORD dwInstanceIndex;
  129. LPSTR szCounterName;
  130. };
  131. };
  132. LPSTR szExplainText;
  133. DWORD DataBuffer[1];
  134. } PDH_COUNTER_INFO_A,*PPDH_COUNTER_INFO_A;
  135. typedef struct _PDH_COUNTER_INFO_W {
  136. DWORD dwLength;
  137. DWORD dwType;
  138. DWORD CVersion;
  139. DWORD CStatus;
  140. LONG lScale;
  141. LONG lDefaultScale;
  142. DWORD_PTR dwUserData;
  143. DWORD_PTR dwQueryUserData;
  144. LPWSTR szFullPath;
  145. __C89_NAMELESS union {
  146. PDH_DATA_ITEM_PATH_ELEMENTS_W DataItemPath;
  147. PDH_COUNTER_PATH_ELEMENTS_W CounterPath;
  148. __C89_NAMELESS struct {
  149. LPWSTR szMachineName;
  150. LPWSTR szObjectName;
  151. LPWSTR szInstanceName;
  152. LPWSTR szParentInstance;
  153. DWORD dwInstanceIndex;
  154. LPWSTR szCounterName;
  155. };
  156. };
  157. LPWSTR szExplainText;
  158. DWORD DataBuffer[1];
  159. } PDH_COUNTER_INFO_W,*PPDH_COUNTER_INFO_W;
  160. typedef struct _PDH_TIME_INFO {
  161. LONGLONG StartTime;
  162. LONGLONG EndTime;
  163. DWORD SampleCount;
  164. } PDH_TIME_INFO,*PPDH_TIME_INFO;
  165. typedef struct _PDH_RAW_LOG_RECORD {
  166. DWORD dwStructureSize;
  167. DWORD dwRecordType;
  168. DWORD dwItems;
  169. UCHAR RawBytes[1];
  170. } PDH_RAW_LOG_RECORD,*PPDH_RAW_LOG_RECORD;
  171. typedef struct _PDH_LOG_SERVICE_QUERY_INFO_A {
  172. DWORD dwSize;
  173. DWORD dwFlags;
  174. DWORD dwLogQuota;
  175. LPSTR szLogFileCaption;
  176. LPSTR szDefaultDir;
  177. LPSTR szBaseFileName;
  178. DWORD dwFileType;
  179. DWORD dwReserved;
  180. __C89_NAMELESS union {
  181. __C89_NAMELESS struct {
  182. DWORD PdlAutoNameInterval;
  183. DWORD PdlAutoNameUnits;
  184. LPSTR PdlCommandFilename;
  185. LPSTR PdlCounterList;
  186. DWORD PdlAutoNameFormat;
  187. DWORD PdlSampleInterval;
  188. FILETIME PdlLogStartTime;
  189. FILETIME PdlLogEndTime;
  190. };
  191. __C89_NAMELESS struct {
  192. DWORD TlNumberOfBuffers;
  193. DWORD TlMinimumBuffers;
  194. DWORD TlMaximumBuffers;
  195. DWORD TlFreeBuffers;
  196. DWORD TlBufferSize;
  197. DWORD TlEventsLost;
  198. DWORD TlLoggerThreadId;
  199. DWORD TlBuffersWritten;
  200. DWORD TlLogHandle;
  201. LPSTR TlLogFileName;
  202. };
  203. };
  204. } PDH_LOG_SERVICE_QUERY_INFO_A,*PPDH_LOG_SERVICE_QUERY_INFO_A;
  205. typedef struct _PDH_LOG_SERVICE_QUERY_INFO_W {
  206. DWORD dwSize;
  207. DWORD dwFlags;
  208. DWORD dwLogQuota;
  209. LPWSTR szLogFileCaption;
  210. LPWSTR szDefaultDir;
  211. LPWSTR szBaseFileName;
  212. DWORD dwFileType;
  213. DWORD dwReserved;
  214. __C89_NAMELESS union {
  215. __C89_NAMELESS struct {
  216. DWORD PdlAutoNameInterval;
  217. DWORD PdlAutoNameUnits;
  218. LPWSTR PdlCommandFilename;
  219. LPWSTR PdlCounterList;
  220. DWORD PdlAutoNameFormat;
  221. DWORD PdlSampleInterval;
  222. FILETIME PdlLogStartTime;
  223. FILETIME PdlLogEndTime;
  224. };
  225. __C89_NAMELESS struct {
  226. DWORD TlNumberOfBuffers;
  227. DWORD TlMinimumBuffers;
  228. DWORD TlMaximumBuffers;
  229. DWORD TlFreeBuffers;
  230. DWORD TlBufferSize;
  231. DWORD TlEventsLost;
  232. DWORD TlLoggerThreadId;
  233. DWORD TlBuffersWritten;
  234. DWORD TlLogHandle;
  235. LPWSTR TlLogFileName;
  236. };
  237. };
  238. } PDH_LOG_SERVICE_QUERY_INFO_W,*PPDH_LOG_SERVICE_QUERY_INFO_W;
  239. #define MAX_TIME_VALUE ((LONGLONG) 0x7FFFFFFFFFFFFFFF)
  240. #define MIN_TIME_VALUE ((LONGLONG) 0)
  241. PDH_FUNCTION PdhGetDllVersion(LPDWORD lpdwVersion);
  242. PDH_FUNCTION PdhOpenQueryW(LPCWSTR szDataSource,DWORD_PTR dwUserData,PDH_HQUERY *phQuery);
  243. PDH_FUNCTION PdhOpenQueryA(LPCSTR szDataSource,DWORD_PTR dwUserData,PDH_HQUERY *phQuery);
  244. PDH_FUNCTION PdhAddCounterW(PDH_HQUERY hQuery,LPCWSTR szFullCounterPath,DWORD_PTR dwUserData,PDH_HCOUNTER *phCounter);
  245. PDH_FUNCTION PdhAddCounterA(PDH_HQUERY hQuery,LPCSTR szFullCounterPath,DWORD_PTR dwUserData,PDH_HCOUNTER *phCounter);
  246. PDH_FUNCTION PdhRemoveCounter(PDH_HCOUNTER hCounter);
  247. PDH_FUNCTION PdhCollectQueryData(PDH_HQUERY hQuery);
  248. PDH_FUNCTION PdhCloseQuery(PDH_HQUERY hQuery);
  249. PDH_FUNCTION PdhGetFormattedCounterValue(PDH_HCOUNTER hCounter,DWORD dwFormat,LPDWORD lpdwType,PPDH_FMT_COUNTERVALUE pValue);
  250. PDH_FUNCTION PdhGetFormattedCounterArrayA(PDH_HCOUNTER hCounter,DWORD dwFormat,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_FMT_COUNTERVALUE_ITEM_A ItemBuffer);
  251. PDH_FUNCTION PdhGetFormattedCounterArrayW(PDH_HCOUNTER hCounter,DWORD dwFormat,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_FMT_COUNTERVALUE_ITEM_W ItemBuffer);
  252. #define PDH_FMT_RAW ((DWORD) 0x00000010)
  253. #define PDH_FMT_ANSI ((DWORD) 0x00000020)
  254. #define PDH_FMT_UNICODE ((DWORD) 0x00000040)
  255. #define PDH_FMT_LONG ((DWORD) 0x00000100)
  256. #define PDH_FMT_DOUBLE ((DWORD) 0x00000200)
  257. #define PDH_FMT_LARGE ((DWORD) 0x00000400)
  258. #define PDH_FMT_NOSCALE ((DWORD) 0x00001000)
  259. #define PDH_FMT_1000 ((DWORD) 0x00002000)
  260. #define PDH_FMT_NODATA ((DWORD) 0x00004000)
  261. #define PDH_FMT_NOCAP100 ((DWORD) 0x00008000)
  262. #define PERF_DETAIL_COSTLY ((DWORD) 0x00010000)
  263. #define PERF_DETAIL_STANDARD ((DWORD) 0x0000FFFF)
  264. PDH_FUNCTION PdhGetRawCounterValue(PDH_HCOUNTER hCounter,LPDWORD lpdwType,PPDH_RAW_COUNTER pValue);
  265. PDH_FUNCTION PdhGetRawCounterArrayA(PDH_HCOUNTER hCounter,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_RAW_COUNTER_ITEM_A ItemBuffer);
  266. PDH_FUNCTION PdhGetRawCounterArrayW(PDH_HCOUNTER hCounter,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_RAW_COUNTER_ITEM_W ItemBuffer);
  267. PDH_FUNCTION PdhCalculateCounterFromRawValue(PDH_HCOUNTER hCounter,DWORD dwFormat,PPDH_RAW_COUNTER rawValue1,PPDH_RAW_COUNTER rawValue2,PPDH_FMT_COUNTERVALUE fmtValue);
  268. PDH_FUNCTION PdhComputeCounterStatistics(PDH_HCOUNTER hCounter,DWORD dwFormat,DWORD dwFirstEntry,DWORD dwNumEntries,PPDH_RAW_COUNTER lpRawValueArray,PPDH_STATISTICS data);
  269. PDH_FUNCTION PdhGetCounterInfoW(PDH_HCOUNTER hCounter,BOOLEAN bRetrieveExplainText,LPDWORD pdwBufferSize,PPDH_COUNTER_INFO_W lpBuffer);
  270. PDH_FUNCTION PdhGetCounterInfoA(PDH_HCOUNTER hCounter,BOOLEAN bRetrieveExplainText,LPDWORD pdwBufferSize,PPDH_COUNTER_INFO_A lpBuffer);
  271. #define PDH_MAX_SCALE (__MSABI_LONG(7))
  272. #define PDH_MIN_SCALE (__MSABI_LONG(-7))
  273. PDH_FUNCTION PdhSetCounterScaleFactor(PDH_HCOUNTER hCounter,LONG lFactor);
  274. PDH_FUNCTION PdhConnectMachineW(LPCWSTR szMachineName);
  275. PDH_FUNCTION PdhConnectMachineA(LPCSTR szMachineName);
  276. PDH_FUNCTION PdhEnumMachinesW(LPCWSTR szDataSource,LPWSTR mszMachineList,LPDWORD pcchBufferSize);
  277. PDH_FUNCTION PdhEnumMachinesA(LPCSTR szDataSource,LPSTR mszMachineList,LPDWORD pcchBufferSize);
  278. PDH_FUNCTION PdhEnumObjectsW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPWSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh);
  279. PDH_FUNCTION PdhEnumObjectsA(LPCSTR szDataSource,LPCSTR szMachineName,LPSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh);
  280. PDH_FUNCTION PdhEnumObjectItemsW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR mszCounterList,LPDWORD pcchCounterListLength,LPWSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags);
  281. PDH_FUNCTION PdhEnumObjectItemsA(LPCSTR szDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR mszCounterList,LPDWORD pcchCounterListLength,LPSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags);
  282. #define PDH_OBJECT_HAS_INSTANCES ((DWORD) 0x00000001)
  283. PDH_FUNCTION PdhMakeCounterPathW(PPDH_COUNTER_PATH_ELEMENTS_W pCounterPathElements,LPWSTR szFullPathBuffer,LPDWORD pcchBufferSize,DWORD dwFlags);
  284. PDH_FUNCTION PdhMakeCounterPathA(PPDH_COUNTER_PATH_ELEMENTS_A pCounterPathElements,LPSTR szFullPathBuffer,LPDWORD pcchBufferSize,DWORD dwFlags);
  285. PDH_FUNCTION PdhParseCounterPathW(LPCWSTR szFullPathBuffer,PPDH_COUNTER_PATH_ELEMENTS_W pCounterPathElements,LPDWORD pdwBufferSize,DWORD dwFlags);
  286. PDH_FUNCTION PdhParseCounterPathA(LPCSTR szFullPathBuffer,PPDH_COUNTER_PATH_ELEMENTS_A pCounterPathElements,LPDWORD pdwBufferSize,DWORD dwFlags);
  287. #define PDH_PATH_WBEM_RESULT ((DWORD) 0x00000001)
  288. #define PDH_PATH_WBEM_INPUT ((DWORD) 0x00000002)
  289. #define PDH_PATH_LANG_FLAGS(LangId,Flags) ((DWORD)(((LangId & 0x0000FFFF) << 16) | (Flags & 0x0000FFFF)))
  290. PDH_FUNCTION PdhParseInstanceNameW(LPCWSTR szInstanceString,LPWSTR szInstanceName,LPDWORD pcchInstanceNameLength,LPWSTR szParentName,LPDWORD pcchParentNameLength,LPDWORD lpIndex);
  291. PDH_FUNCTION PdhParseInstanceNameA(LPCSTR szInstanceString,LPSTR szInstanceName,LPDWORD pcchInstanceNameLength,LPSTR szParentName,LPDWORD pcchParentNameLength,LPDWORD lpIndex);
  292. PDH_FUNCTION PdhValidatePathW(LPCWSTR szFullPathBuffer);
  293. PDH_FUNCTION PdhValidatePathA(LPCSTR szFullPathBuffer);
  294. PDH_FUNCTION PdhGetDefaultPerfObjectW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPWSTR szDefaultObjectName,LPDWORD pcchBufferSize);
  295. PDH_FUNCTION PdhGetDefaultPerfObjectA(LPCSTR szDataSource,LPCSTR szMachineName,LPSTR szDefaultObjectName,LPDWORD pcchBufferSize);
  296. PDH_FUNCTION PdhGetDefaultPerfCounterW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR szDefaultCounterName,LPDWORD pcchBufferSize);
  297. PDH_FUNCTION PdhGetDefaultPerfCounterA(LPCSTR szDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR szDefaultCounterName,LPDWORD pcchBufferSize);
  298. typedef PDH_STATUS (WINAPI *CounterPathCallBack)(DWORD_PTR);
  299. typedef struct _BrowseDlgConfig_HW {
  300. DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved : 22;
  301. HWND hWndOwner;
  302. PDH_HLOG hDataSource;
  303. LPWSTR szReturnPathBuffer;
  304. DWORD cchReturnPathLength;
  305. CounterPathCallBack pCallBack;
  306. DWORD_PTR dwCallBackArg;
  307. PDH_STATUS CallBackStatus;
  308. DWORD dwDefaultDetailLevel;
  309. LPWSTR szDialogBoxCaption;
  310. } PDH_BROWSE_DLG_CONFIG_HW,*PPDH_BROWSE_DLG_CONFIG_HW;
  311. typedef struct _BrowseDlgConfig_HA {
  312. DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved:22;
  313. HWND hWndOwner;
  314. PDH_HLOG hDataSource;
  315. LPSTR szReturnPathBuffer;
  316. DWORD cchReturnPathLength;
  317. CounterPathCallBack pCallBack;
  318. DWORD_PTR dwCallBackArg;
  319. PDH_STATUS CallBackStatus;
  320. DWORD dwDefaultDetailLevel;
  321. LPSTR szDialogBoxCaption;
  322. } PDH_BROWSE_DLG_CONFIG_HA,*PPDH_BROWSE_DLG_CONFIG_HA;
  323. typedef struct _BrowseDlgConfig_W {
  324. DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved:22;
  325. HWND hWndOwner;
  326. LPWSTR szDataSource;
  327. LPWSTR szReturnPathBuffer;
  328. DWORD cchReturnPathLength;
  329. CounterPathCallBack pCallBack;
  330. DWORD_PTR dwCallBackArg;
  331. PDH_STATUS CallBackStatus;
  332. DWORD dwDefaultDetailLevel;
  333. LPWSTR szDialogBoxCaption;
  334. } PDH_BROWSE_DLG_CONFIG_W,*PPDH_BROWSE_DLG_CONFIG_W;
  335. typedef struct _BrowseDlgConfig_A {
  336. DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved:22;
  337. HWND hWndOwner;
  338. LPSTR szDataSource;
  339. LPSTR szReturnPathBuffer;
  340. DWORD cchReturnPathLength;
  341. CounterPathCallBack pCallBack;
  342. DWORD_PTR dwCallBackArg;
  343. PDH_STATUS CallBackStatus;
  344. DWORD dwDefaultDetailLevel;
  345. LPSTR szDialogBoxCaption;
  346. } PDH_BROWSE_DLG_CONFIG_A,*PPDH_BROWSE_DLG_CONFIG_A;
  347. PDH_FUNCTION PdhBrowseCountersW(PPDH_BROWSE_DLG_CONFIG_W pBrowseDlgData);
  348. PDH_FUNCTION PdhBrowseCountersA(PPDH_BROWSE_DLG_CONFIG_A pBrowseDlgData);
  349. PDH_FUNCTION PdhExpandCounterPathW(LPCWSTR szWildCardPath,LPWSTR mszExpandedPathList,LPDWORD pcchPathListLength);
  350. PDH_FUNCTION PdhExpandCounterPathA(LPCSTR szWildCardPath,LPSTR mszExpandedPathList,LPDWORD pcchPathListLength);
  351. PDH_FUNCTION PdhLookupPerfNameByIndexW(LPCWSTR szMachineName,DWORD dwNameIndex,LPWSTR szNameBuffer,LPDWORD pcchNameBufferSize);
  352. PDH_FUNCTION PdhLookupPerfNameByIndexA(LPCSTR szMachineName,DWORD dwNameIndex,LPSTR szNameBuffer,LPDWORD pcchNameBufferSize);
  353. PDH_FUNCTION PdhLookupPerfIndexByNameW(LPCWSTR szMachineName,LPCWSTR szNameBuffer,LPDWORD pdwIndex);
  354. PDH_FUNCTION PdhLookupPerfIndexByNameA(LPCSTR szMachineName,LPCSTR szNameBuffer,LPDWORD pdwIndex);
  355. #define PDH_NOEXPANDCOUNTERS 1
  356. #define PDH_NOEXPANDINSTANCES 2
  357. #define PDH_REFRESHCOUNTERS 4
  358. PDH_FUNCTION PdhExpandWildCardPathA(LPCSTR szDataSource,LPCSTR szWildCardPath,LPSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags);
  359. PDH_FUNCTION PdhExpandWildCardPathW(LPCWSTR szDataSource,LPCWSTR szWildCardPath,LPWSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags);
  360. #define PDH_LOG_READ_ACCESS ((DWORD) 0x00010000)
  361. #define PDH_LOG_WRITE_ACCESS ((DWORD) 0x00020000)
  362. #define PDH_LOG_UPDATE_ACCESS ((DWORD) 0x00040000)
  363. #define PDH_LOG_ACCESS_MASK ((DWORD) 0x000F0000)
  364. #define PDH_LOG_CREATE_NEW ((DWORD) 0x00000001)
  365. #define PDH_LOG_CREATE_ALWAYS ((DWORD) 0x00000002)
  366. #define PDH_LOG_OPEN_ALWAYS ((DWORD) 0x00000003)
  367. #define PDH_LOG_OPEN_EXISTING ((DWORD) 0x00000004)
  368. #define PDH_LOG_CREATE_MASK ((DWORD) 0x0000000F)
  369. #define PDH_LOG_OPT_USER_STRING ((DWORD) 0x01000000)
  370. #define PDH_LOG_OPT_CIRCULAR ((DWORD) 0x02000000)
  371. #define PDH_LOG_OPT_MAX_IS_BYTES ((DWORD) 0x04000000)
  372. #define PDH_LOG_OPT_APPEND ((DWORD) 0x08000000)
  373. #define PDH_LOG_OPT_MASK ((DWORD) 0x0F000000)
  374. #define PDH_LOG_TYPE_UNDEFINED 0
  375. #define PDH_LOG_TYPE_CSV 1
  376. #define PDH_LOG_TYPE_TSV 2
  377. #define PDH_LOG_TYPE_TRACE_KERNEL 4
  378. #define PDH_LOG_TYPE_TRACE_GENERIC 5
  379. #define PDH_LOG_TYPE_PERFMON 6
  380. #define PDH_LOG_TYPE_SQL 7
  381. #define PDH_LOG_TYPE_BINARY 8
  382. PDH_FUNCTION PdhOpenLogW(LPCWSTR szLogFileName,DWORD dwAccessFlags,LPDWORD lpdwLogType,PDH_HQUERY hQuery,DWORD dwMaxSize,LPCWSTR szUserCaption,PDH_HLOG *phLog);
  383. PDH_FUNCTION PdhOpenLogA(LPCSTR szLogFileName,DWORD dwAccessFlags,LPDWORD lpdwLogType,PDH_HQUERY hQuery,DWORD dwMaxSize,LPCSTR szUserCaption,PDH_HLOG *phLog);
  384. PDH_FUNCTION PdhUpdateLogW(PDH_HLOG hLog,LPCWSTR szUserString);
  385. PDH_FUNCTION PdhUpdateLogA(PDH_HLOG hLog,LPCSTR szUserString);
  386. PDH_FUNCTION PdhUpdateLogFileCatalog(PDH_HLOG hLog);
  387. PDH_FUNCTION PdhGetLogFileSize(PDH_HLOG hLog,LONGLONG *llSize);
  388. PDH_FUNCTION PdhCloseLog(PDH_HLOG hLog,DWORD dwFlags);
  389. #define PDH_FLAGS_CLOSE_QUERY ((DWORD) 0x00000001)
  390. #define PDH_FLAGS_FILE_BROWSER_ONLY ((DWORD) 0x00000001)
  391. PDH_FUNCTION PdhSelectDataSourceW(HWND hWndOwner,DWORD dwFlags,LPWSTR szDataSource,LPDWORD pcchBufferLength);
  392. PDH_FUNCTION PdhSelectDataSourceA(HWND hWndOwner,DWORD dwFlags,LPSTR szDataSource,LPDWORD pcchBufferLength);
  393. WINBOOL PdhIsRealTimeQuery(PDH_HQUERY hQuery);
  394. PDH_FUNCTION PdhSetQueryTimeRange(PDH_HQUERY hQuery,PPDH_TIME_INFO pInfo);
  395. PDH_FUNCTION PdhGetDataSourceTimeRangeW(LPCWSTR szDataSource,LPDWORD pdwNumEntries,PPDH_TIME_INFO pInfo,LPDWORD pdwBufferSize);
  396. PDH_FUNCTION PdhGetDataSourceTimeRangeA(LPCSTR szDataSource,LPDWORD pdwNumEntries,PPDH_TIME_INFO pInfo,LPDWORD dwBufferSize);
  397. PDH_FUNCTION PdhCollectQueryDataEx(PDH_HQUERY hQuery,DWORD dwIntervalTime,HANDLE hNewDataEvent);
  398. PDH_FUNCTION PdhFormatFromRawValue(DWORD dwCounterType,DWORD dwFormat,LONGLONG *pTimeBase,PPDH_RAW_COUNTER pRawValue1,PPDH_RAW_COUNTER pRawValue2,PPDH_FMT_COUNTERVALUE pFmtValue);
  399. PDH_FUNCTION PdhGetCounterTimeBase(PDH_HCOUNTER hCounter,LONGLONG *pTimeBase);
  400. PDH_FUNCTION PdhReadRawLogRecord(PDH_HLOG hLog,FILETIME ftRecord,PPDH_RAW_LOG_RECORD pRawLogRecord,LPDWORD pdwBufferLength);
  401. #define DATA_SOURCE_REGISTRY ((DWORD) 0x00000001)
  402. #define DATA_SOURCE_LOGFILE ((DWORD) 0x00000002)
  403. #define DATA_SOURCE_WBEM ((DWORD) 0x00000004)
  404. PDH_FUNCTION PdhSetDefaultRealTimeDataSource(DWORD dwDataSourceId);
  405. PDH_FUNCTION PdhBindInputDataSourceW(PDH_HLOG *phDataSource,LPCWSTR LogFileNameList);
  406. PDH_FUNCTION PdhBindInputDataSourceA(PDH_HLOG *phDataSource,LPCSTR LogFileNameList);
  407. PDH_FUNCTION PdhOpenQueryH(PDH_HLOG hDataSource,DWORD_PTR dwUserData,PDH_HQUERY *phQuery);
  408. PDH_FUNCTION PdhEnumMachinesHW(PDH_HLOG hDataSource,LPWSTR mszMachineList,LPDWORD pcchBufferSize);
  409. PDH_FUNCTION PdhEnumMachinesHA(PDH_HLOG hDataSource,LPSTR mszMachineList,LPDWORD pcchBufferSize);
  410. PDH_FUNCTION PdhEnumObjectsHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPWSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh);
  411. PDH_FUNCTION PdhEnumObjectsHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh);
  412. PDH_FUNCTION PdhEnumObjectItemsHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR mszCounterList,LPDWORD pcchCounterListLength,LPWSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags);
  413. PDH_FUNCTION PdhEnumObjectItemsHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR mszCounterList,LPDWORD pcchCounterListLength,LPSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags);
  414. PDH_FUNCTION PdhExpandWildCardPathHW(PDH_HLOG hDataSource,LPCWSTR szWildCardPath,LPWSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags);
  415. PDH_FUNCTION PdhExpandWildCardPathHA(PDH_HLOG hDataSource,LPCSTR szWildCardPath,LPSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags);
  416. PDH_FUNCTION PdhGetDataSourceTimeRangeH(PDH_HLOG hDataSource,LPDWORD pdwNumEntries,PPDH_TIME_INFO pInfo,LPDWORD pdwBufferSize);
  417. PDH_FUNCTION PdhGetDefaultPerfObjectHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPWSTR szDefaultObjectName,LPDWORD pcchBufferSize);
  418. PDH_FUNCTION PdhGetDefaultPerfObjectHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPSTR szDefaultObjectName,LPDWORD pcchBufferSize);
  419. PDH_FUNCTION PdhGetDefaultPerfCounterHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR szDefaultCounterName,LPDWORD pcchBufferSize);
  420. PDH_FUNCTION PdhGetDefaultPerfCounterHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR szDefaultCounterName,LPDWORD pcchBufferSize);
  421. PDH_FUNCTION PdhBrowseCountersHW(PPDH_BROWSE_DLG_CONFIG_HW pBrowseDlgData);
  422. PDH_FUNCTION PdhBrowseCountersHA(PPDH_BROWSE_DLG_CONFIG_HA pBrowseDlgData);
  423. PDH_FUNCTION PdhVerifySQLDBW(LPCWSTR szDataSource);
  424. PDH_FUNCTION PdhVerifySQLDBA(LPCSTR szDataSource);
  425. PDH_FUNCTION PdhCreateSQLTablesW(LPCWSTR szDataSource);
  426. PDH_FUNCTION PdhCreateSQLTablesA(LPCSTR szDataSource);
  427. PDH_FUNCTION PdhEnumLogSetNamesW(LPCWSTR szDataSource,LPWSTR mszDataSetNameList,LPDWORD pcchBufferLength);
  428. PDH_FUNCTION PdhEnumLogSetNamesA(LPCSTR szDataSource,LPSTR mszDataSetNameList,LPDWORD pcchBufferLength);
  429. PDH_FUNCTION PdhGetLogSetGUID(PDH_HLOG hLog,GUID *pGuid,int *pRunId);
  430. PDH_FUNCTION PdhSetLogSetRunID(PDH_HLOG hLog,int RunId);
  431. #if defined(UNICODE)
  432. #ifndef _UNICODE
  433. #define _UNICODE
  434. #endif
  435. #endif
  436. #if defined(_UNICODE)
  437. #if !defined(UNICODE)
  438. #define UNICODE
  439. #endif
  440. #endif
  441. #define PDH_COUNTER_INFO __MINGW_NAME_UAW(PDH_COUNTER_INFO)
  442. #define PPDH_COUNTER_INFO __MINGW_NAME_UAW(PPDH_COUNTER_INFO)
  443. #define PDH_COUNTER_PATH_ELEMENTS __MINGW_NAME_UAW(PDH_COUNTER_PATH_ELEMENTS)
  444. #define PPDH_COUNTER_PATH_ELEMENTS __MINGW_NAME_UAW(PPDH_COUNTER_PATH_ELEMENTS)
  445. #define PDH_BROWSE_DLG_CONFIG __MINGW_NAME_UAW(PDH_BROWSE_DLG_CONFIG)
  446. #define PPDH_BROWSE_DLG_CONFIG __MINGW_NAME_UAW(PPDH_BROWSE_DLG_CONFIG)
  447. #define PDH_FMT_COUNTERVALUE_ITEM __MINGW_NAME_UAW(PDH_FMT_COUNTERVALUE_ITEM)
  448. #define PPDH_FMT_COUNTERVALUE_ITEM __MINGW_NAME_UAW(PPDH_FMT_COUNTERVALUE_ITEM)
  449. #define PDH_RAW_COUNTER_ITEM __MINGW_NAME_UAW(PDH_RAW_COUNTER_ITEM)
  450. #define PPDH_RAW_COUNTER_ITEM __MINGW_NAME_UAW(PPDH_RAW_COUNTER_ITEM)
  451. #define PDH_LOG_SERVICE_QUERY_INFO __MINGW_NAME_UAW(PDH_LOG_SERVICE_QUERY_INFO)
  452. #define PPDH_LOG_SERVICE_QUERY_INFO __MINGW_NAME_UAW(PPDH_LOG_SERVICE_QUERY_INFO)
  453. #define PDH_BROWSE_DLG_CONFIG_H __MINGW_NAME_AW(PDH_BROWSE_DLG_CONFIG_H)
  454. #define PPDH_BROWSE_DLG_CONFIG_H __MINGW_NAME_AW(PPDH_BROWSE_DLG_CONFIG_H)
  455. #define PdhOpenQuery __MINGW_NAME_AW(PdhOpenQuery)
  456. #define PdhAddCounter __MINGW_NAME_AW(PdhAddCounter)
  457. #define PdhGetCounterInfo __MINGW_NAME_AW(PdhGetCounterInfo)
  458. #define PdhConnectMachine __MINGW_NAME_AW(PdhConnectMachine)
  459. #define PdhEnumMachines __MINGW_NAME_AW(PdhEnumMachines)
  460. #define PdhEnumObjects __MINGW_NAME_AW(PdhEnumObjects)
  461. #define PdhEnumObjectItems __MINGW_NAME_AW(PdhEnumObjectItems)
  462. #define PdhMakeCounterPath __MINGW_NAME_AW(PdhMakeCounterPath)
  463. #define PdhParseCounterPath __MINGW_NAME_AW(PdhParseCounterPath)
  464. #define PdhParseInstanceName __MINGW_NAME_AW(PdhParseInstanceName)
  465. #define PdhValidatePath __MINGW_NAME_AW(PdhValidatePath)
  466. #define PdhGetDefaultPerfObject __MINGW_NAME_AW(PdhGetDefaultPerfObject)
  467. #define PdhGetDefaultPerfCounter __MINGW_NAME_AW(PdhGetDefaultPerfCounter)
  468. #define PdhBrowseCounters __MINGW_NAME_AW(PdhBrowseCounters)
  469. #define PdhBrowseCountersH __MINGW_NAME_AW(PdhBrowseCountersH)
  470. #define PdhExpandCounterPath __MINGW_NAME_AW(PdhExpandCounterPath)
  471. #define PdhGetFormattedCounterArray __MINGW_NAME_AW(PdhGetFormattedCounterArray)
  472. #define PdhGetRawCounterArray __MINGW_NAME_AW(PdhGetRawCounterArray)
  473. #define PdhLookupPerfNameByIndex __MINGW_NAME_AW(PdhLookupPerfNameByIndex)
  474. #define PdhLookupPerfIndexByName __MINGW_NAME_AW(PdhLookupPerfIndexByName)
  475. #define PdhOpenLog __MINGW_NAME_AW(PdhOpenLog)
  476. #define PdhUpdateLog __MINGW_NAME_AW(PdhUpdateLog)
  477. #define PdhSelectDataSource __MINGW_NAME_AW(PdhSelectDataSource)
  478. #define PdhGetDataSourceTimeRange __MINGW_NAME_AW(PdhGetDataSourceTimeRange)
  479. #define PdhLogServiceControl __MINGW_NAME_AW(PdhLogServiceControl)
  480. #define PdhLogServiceQuery __MINGW_NAME_AW(PdhLogServiceQuery)
  481. #define PdhExpandWildCardPath __MINGW_NAME_AW(PdhExpandWildCardPath)
  482. #define PdhBindInputDataSource __MINGW_NAME_AW(PdhBindInputDataSource)
  483. #define PdhEnumMachinesH __MINGW_NAME_AW(PdhEnumMachinesH)
  484. #define PdhEnumObjectsH __MINGW_NAME_AW(PdhEnumObjectsH)
  485. #define PdhEnumObjectItemsH __MINGW_NAME_AW(PdhEnumObjectItemsH)
  486. #define PdhExpandWildCardPathH __MINGW_NAME_AW(PdhExpandWildCardPathH)
  487. #define PdhGetDefaultPerfObjectH __MINGW_NAME_AW(PdhGetDefaultPerfObjectH)
  488. #define PdhGetDefaultPerfCounterH __MINGW_NAME_AW(PdhGetDefaultPerfCounterH)
  489. #define PdhEnumLogSetNames __MINGW_NAME_AW(PdhEnumLogSetNames)
  490. #define PdhCreateSQLTables __MINGW_NAME_AW(PdhCreateSQLTables)
  491. #define PdhVerifySQLDB __MINGW_NAME_AW(PdhVerifySQLDB)
  492. #if (_WIN32_WINNT >= 0x0600)
  493. PDH_FUNCTION PdhAddEnglishCounterW(PDH_HQUERY hQuery,LPCWSTR szFullCounterPath,DWORD_PTR dwUserData,PDH_HCOUNTER *phCounter);
  494. PDH_FUNCTION PdhAddEnglishCounterA(PDH_HQUERY hQuery,LPCSTR szFullCounterPath,DWORD_PTR dwUserData,PDH_HCOUNTER *phCounter);
  495. #define PdhAddEnglishCounter __MINGW_NAME_AW(PdhAddEnglishCounter)
  496. PDH_FUNCTION PdhCollectQueryDataWithTime(PDH_HQUERY hQuery,LONGLONG *pllTimeStamp);
  497. PDH_FUNCTION PdhValidatePathExW(PDH_HLOG hDataSource,LPCWSTR szFullPathBuffer);
  498. PDH_FUNCTION PdhValidatePathExA(PDH_HLOG hDataSource,LPCSTR szFullPathBuffer);
  499. #define PdhValidatePathEx __MINGW_NAME_AW(PdhValidatePathEx)
  500. #endif /*(_WIN32_WINNT >= 0x0600)*/
  501. #ifdef __cplusplus
  502. }
  503. #endif
  504. #endif