Mercurial > games > semicongine
diff fuhtark_test/include/winapi/pdh.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/pdh.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,615 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef _PDH_H_ +#define _PDH_H_ + +#include <windows.h> +#include <winperf.h> + +#ifdef __cplusplus +extern "C" { +#endif + + typedef LONG PDH_STATUS; + +#define PDH_FUNCTION PDH_STATUS WINAPI + +#define PDH_CVERSION_WIN40 ((DWORD)(0x0400)) +#define PDH_CVERSION_WIN50 ((DWORD)(0x0500)) + +#define PDH_VERSION ((DWORD)((PDH_CVERSION_WIN50) + 0x0003)) + +#define IsSuccessSeverity(ErrorCode) ((((DWORD)(ErrorCode) & (0xC0000000L))==0x00000000L) ? TRUE : FALSE) +#define IsInformationalSeverity(ErrorCode) ((((DWORD)(ErrorCode) & (0xC0000000L))==0x40000000L) ? TRUE : FALSE) +#define IsWarningSeverity(ErrorCode) ((((DWORD)(ErrorCode) & (0xC0000000L))==0x80000000L) ? TRUE : FALSE) +#define IsErrorSeverity(ErrorCode) ((((DWORD)(ErrorCode) & (0xC0000000L))==0xC0000000L) ? TRUE : FALSE) + +#define MAX_COUNTER_PATH 256 + +#define PDH_MAX_COUNTER_NAME 1024 +#define PDH_MAX_INSTANCE_NAME 1024 +#define PDH_MAX_COUNTER_PATH 2048 +#define PDH_MAX_DATASOURCE_PATH 1024 + + typedef HANDLE PDH_HCOUNTER; + typedef HANDLE PDH_HQUERY; + typedef HANDLE PDH_HLOG; + + typedef PDH_HCOUNTER HCOUNTER; + typedef PDH_HQUERY HQUERY; +#ifndef _LMHLOGDEFINED_ + typedef PDH_HLOG HLOG; +#endif + +#ifdef INVALID_HANDLE_VALUE +#undef INVALID_HANDLE_VALUE +#define INVALID_HANDLE_VALUE ((HANDLE)((LONG_PTR)-1)) +#endif + +#define H_REALTIME_DATASOURCE NULL +#define H_WBEM_DATASOURCE INVALID_HANDLE_VALUE + + typedef struct _PDH_RAW_COUNTER { + DWORD CStatus; + FILETIME TimeStamp; + LONGLONG FirstValue; + LONGLONG SecondValue; + DWORD MultiCount; + } PDH_RAW_COUNTER,*PPDH_RAW_COUNTER; + + typedef struct _PDH_RAW_COUNTER_ITEM_A { + LPSTR szName; + PDH_RAW_COUNTER RawValue; + } PDH_RAW_COUNTER_ITEM_A,*PPDH_RAW_COUNTER_ITEM_A; + + typedef struct _PDH_RAW_COUNTER_ITEM_W { + LPWSTR szName; + PDH_RAW_COUNTER RawValue; + } PDH_RAW_COUNTER_ITEM_W,*PPDH_RAW_COUNTER_ITEM_W; + + typedef struct _PDH_FMT_COUNTERVALUE { + DWORD CStatus; + __MINGW_EXTENSION union { + LONG longValue; + double doubleValue; + LONGLONG largeValue; + LPCSTR AnsiStringValue; + LPCWSTR WideStringValue; + }; + } PDH_FMT_COUNTERVALUE,*PPDH_FMT_COUNTERVALUE; + + typedef struct _PDH_FMT_COUNTERVALUE_ITEM_A { + LPSTR szName; + PDH_FMT_COUNTERVALUE FmtValue; + } PDH_FMT_COUNTERVALUE_ITEM_A,*PPDH_FMT_COUNTERVALUE_ITEM_A; + + typedef struct _PDH_FMT_COUNTERVALUE_ITEM_W { + LPWSTR szName; + PDH_FMT_COUNTERVALUE FmtValue; + } PDH_FMT_COUNTERVALUE_ITEM_W,*PPDH_FMT_COUNTERVALUE_ITEM_W; + + typedef struct _PDH_STATISTICS { + DWORD dwFormat; + DWORD count; + PDH_FMT_COUNTERVALUE min; + PDH_FMT_COUNTERVALUE max; + PDH_FMT_COUNTERVALUE mean; + } PDH_STATISTICS,*PPDH_STATISTICS; + + typedef struct _PDH_COUNTER_PATH_ELEMENTS_A { + LPSTR szMachineName; + LPSTR szObjectName; + LPSTR szInstanceName; + LPSTR szParentInstance; + DWORD dwInstanceIndex; + LPSTR szCounterName; + } PDH_COUNTER_PATH_ELEMENTS_A,*PPDH_COUNTER_PATH_ELEMENTS_A; + + typedef struct _PDH_COUNTER_PATH_ELEMENTS_W { + LPWSTR szMachineName; + LPWSTR szObjectName; + LPWSTR szInstanceName; + LPWSTR szParentInstance; + DWORD dwInstanceIndex; + LPWSTR szCounterName; + } PDH_COUNTER_PATH_ELEMENTS_W,*PPDH_COUNTER_PATH_ELEMENTS_W; + + typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_A { + LPSTR szMachineName; + GUID ObjectGUID; + DWORD dwItemId; + LPSTR szInstanceName; + } PDH_DATA_ITEM_PATH_ELEMENTS_A,*PPDH_DATA_ITEM_PATH_ELEMENTS_A; + + typedef struct _PDH_DATA_ITEM_PATH_ELEMENTS_W { + LPWSTR szMachineName; + GUID ObjectGUID; + DWORD dwItemId; + LPWSTR szInstanceName; + } PDH_DATA_ITEM_PATH_ELEMENTS_W,*PPDH_DATA_ITEM_PATH_ELEMENTS_W; + + typedef struct _PDH_COUNTER_INFO_A { + DWORD dwLength; + DWORD dwType; + DWORD CVersion; + DWORD CStatus; + LONG lScale; + LONG lDefaultScale; + DWORD_PTR dwUserData; + DWORD_PTR dwQueryUserData; + LPSTR szFullPath; + __MINGW_EXTENSION union { + PDH_DATA_ITEM_PATH_ELEMENTS_A DataItemPath; + PDH_COUNTER_PATH_ELEMENTS_A CounterPath; + __MINGW_EXTENSION struct { + LPSTR szMachineName; + LPSTR szObjectName; + LPSTR szInstanceName; + LPSTR szParentInstance; + DWORD dwInstanceIndex; + LPSTR szCounterName; + }; + }; + LPSTR szExplainText; + DWORD DataBuffer[1]; + } PDH_COUNTER_INFO_A,*PPDH_COUNTER_INFO_A; + + typedef struct _PDH_COUNTER_INFO_W { + DWORD dwLength; + DWORD dwType; + DWORD CVersion; + DWORD CStatus; + LONG lScale; + LONG lDefaultScale; + DWORD_PTR dwUserData; + DWORD_PTR dwQueryUserData; + LPWSTR szFullPath; + __MINGW_EXTENSION union { + PDH_DATA_ITEM_PATH_ELEMENTS_W DataItemPath; + PDH_COUNTER_PATH_ELEMENTS_W CounterPath; + __MINGW_EXTENSION struct { + LPWSTR szMachineName; + LPWSTR szObjectName; + LPWSTR szInstanceName; + LPWSTR szParentInstance; + DWORD dwInstanceIndex; + LPWSTR szCounterName; + }; + }; + LPWSTR szExplainText; + DWORD DataBuffer[1]; + } PDH_COUNTER_INFO_W,*PPDH_COUNTER_INFO_W; + + typedef struct _PDH_TIME_INFO { + LONGLONG StartTime; + LONGLONG EndTime; + DWORD SampleCount; + } PDH_TIME_INFO,*PPDH_TIME_INFO; + + typedef struct _PDH_RAW_LOG_RECORD { + DWORD dwStructureSize; + DWORD dwRecordType; + DWORD dwItems; + UCHAR RawBytes[1]; + } PDH_RAW_LOG_RECORD,*PPDH_RAW_LOG_RECORD; + + typedef struct _PDH_LOG_SERVICE_QUERY_INFO_A { + DWORD dwSize; + DWORD dwFlags; + DWORD dwLogQuota; + LPSTR szLogFileCaption; + LPSTR szDefaultDir; + LPSTR szBaseFileName; + DWORD dwFileType; + DWORD dwReserved; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + DWORD PdlAutoNameInterval; + DWORD PdlAutoNameUnits; + LPSTR PdlCommandFilename; + LPSTR PdlCounterList; + DWORD PdlAutoNameFormat; + DWORD PdlSampleInterval; + FILETIME PdlLogStartTime; + FILETIME PdlLogEndTime; + }; + __MINGW_EXTENSION struct { + DWORD TlNumberOfBuffers; + DWORD TlMinimumBuffers; + DWORD TlMaximumBuffers; + DWORD TlFreeBuffers; + DWORD TlBufferSize; + DWORD TlEventsLost; + DWORD TlLoggerThreadId; + DWORD TlBuffersWritten; + DWORD TlLogHandle; + LPSTR TlLogFileName; + }; + }; + } PDH_LOG_SERVICE_QUERY_INFO_A,*PPDH_LOG_SERVICE_QUERY_INFO_A; + + typedef struct _PDH_LOG_SERVICE_QUERY_INFO_W { + DWORD dwSize; + DWORD dwFlags; + DWORD dwLogQuota; + LPWSTR szLogFileCaption; + LPWSTR szDefaultDir; + LPWSTR szBaseFileName; + DWORD dwFileType; + DWORD dwReserved; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + DWORD PdlAutoNameInterval; + DWORD PdlAutoNameUnits; + LPWSTR PdlCommandFilename; + LPWSTR PdlCounterList; + DWORD PdlAutoNameFormat; + DWORD PdlSampleInterval; + FILETIME PdlLogStartTime; + FILETIME PdlLogEndTime; + }; + __MINGW_EXTENSION struct { + DWORD TlNumberOfBuffers; + DWORD TlMinimumBuffers; + DWORD TlMaximumBuffers; + DWORD TlFreeBuffers; + DWORD TlBufferSize; + DWORD TlEventsLost; + DWORD TlLoggerThreadId; + DWORD TlBuffersWritten; + DWORD TlLogHandle; + LPWSTR TlLogFileName; + }; + }; + } PDH_LOG_SERVICE_QUERY_INFO_W,*PPDH_LOG_SERVICE_QUERY_INFO_W; + +#define MAX_TIME_VALUE ((LONGLONG) 0x7FFFFFFFFFFFFFFF) +#define MIN_TIME_VALUE ((LONGLONG) 0) + + PDH_FUNCTION PdhGetDllVersion(LPDWORD lpdwVersion); + PDH_FUNCTION PdhOpenQueryW(LPCWSTR szDataSource,DWORD_PTR dwUserData,PDH_HQUERY *phQuery); + PDH_FUNCTION PdhOpenQueryA(LPCSTR szDataSource,DWORD_PTR dwUserData,PDH_HQUERY *phQuery); + PDH_FUNCTION PdhAddCounterW(PDH_HQUERY hQuery,LPCWSTR szFullCounterPath,DWORD_PTR dwUserData,PDH_HCOUNTER *phCounter); + PDH_FUNCTION PdhAddCounterA(PDH_HQUERY hQuery,LPCSTR szFullCounterPath,DWORD_PTR dwUserData,PDH_HCOUNTER *phCounter); + PDH_FUNCTION PdhRemoveCounter(PDH_HCOUNTER hCounter); + PDH_FUNCTION PdhCollectQueryData(PDH_HQUERY hQuery); + PDH_FUNCTION PdhCloseQuery(PDH_HQUERY hQuery); + PDH_FUNCTION PdhGetFormattedCounterValue(PDH_HCOUNTER hCounter,DWORD dwFormat,LPDWORD lpdwType,PPDH_FMT_COUNTERVALUE pValue); + PDH_FUNCTION PdhGetFormattedCounterArrayA(PDH_HCOUNTER hCounter,DWORD dwFormat,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_FMT_COUNTERVALUE_ITEM_A ItemBuffer); + PDH_FUNCTION PdhGetFormattedCounterArrayW(PDH_HCOUNTER hCounter,DWORD dwFormat,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_FMT_COUNTERVALUE_ITEM_W ItemBuffer); + +#define PDH_FMT_RAW ((DWORD) 0x00000010) +#define PDH_FMT_ANSI ((DWORD) 0x00000020) +#define PDH_FMT_UNICODE ((DWORD) 0x00000040) +#define PDH_FMT_LONG ((DWORD) 0x00000100) +#define PDH_FMT_DOUBLE ((DWORD) 0x00000200) +#define PDH_FMT_LARGE ((DWORD) 0x00000400) +#define PDH_FMT_NOSCALE ((DWORD) 0x00001000) +#define PDH_FMT_1000 ((DWORD) 0x00002000) +#define PDH_FMT_NODATA ((DWORD) 0x00004000) +#define PDH_FMT_NOCAP100 ((DWORD) 0x00008000) +#define PERF_DETAIL_COSTLY ((DWORD) 0x00010000) +#define PERF_DETAIL_STANDARD ((DWORD) 0x0000FFFF) + + PDH_FUNCTION PdhGetRawCounterValue(PDH_HCOUNTER hCounter,LPDWORD lpdwType,PPDH_RAW_COUNTER pValue); + PDH_FUNCTION PdhGetRawCounterArrayA(PDH_HCOUNTER hCounter,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_RAW_COUNTER_ITEM_A ItemBuffer); + PDH_FUNCTION PdhGetRawCounterArrayW(PDH_HCOUNTER hCounter,LPDWORD lpdwBufferSize,LPDWORD lpdwItemCount,PPDH_RAW_COUNTER_ITEM_W ItemBuffer); + PDH_FUNCTION PdhCalculateCounterFromRawValue(PDH_HCOUNTER hCounter,DWORD dwFormat,PPDH_RAW_COUNTER rawValue1,PPDH_RAW_COUNTER rawValue2,PPDH_FMT_COUNTERVALUE fmtValue); + PDH_FUNCTION PdhComputeCounterStatistics(PDH_HCOUNTER hCounter,DWORD dwFormat,DWORD dwFirstEntry,DWORD dwNumEntries,PPDH_RAW_COUNTER lpRawValueArray,PPDH_STATISTICS data); + PDH_FUNCTION PdhGetCounterInfoW(PDH_HCOUNTER hCounter,BOOLEAN bRetrieveExplainText,LPDWORD pdwBufferSize,PPDH_COUNTER_INFO_W lpBuffer); + PDH_FUNCTION PdhGetCounterInfoA(PDH_HCOUNTER hCounter,BOOLEAN bRetrieveExplainText,LPDWORD pdwBufferSize,PPDH_COUNTER_INFO_A lpBuffer); + +#define PDH_MAX_SCALE (7L) +#define PDH_MIN_SCALE (-7L) + + PDH_FUNCTION PdhSetCounterScaleFactor(PDH_HCOUNTER hCounter,LONG lFactor); + PDH_FUNCTION PdhConnectMachineW(LPCWSTR szMachineName); + PDH_FUNCTION PdhConnectMachineA(LPCSTR szMachineName); + PDH_FUNCTION PdhEnumMachinesW(LPCWSTR szDataSource,LPWSTR mszMachineList,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhEnumMachinesA(LPCSTR szDataSource,LPSTR mszMachineList,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhEnumObjectsW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPWSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh); + PDH_FUNCTION PdhEnumObjectsA(LPCSTR szDataSource,LPCSTR szMachineName,LPSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh); + PDH_FUNCTION PdhEnumObjectItemsW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR mszCounterList,LPDWORD pcchCounterListLength,LPWSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags); + PDH_FUNCTION PdhEnumObjectItemsA(LPCSTR szDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR mszCounterList,LPDWORD pcchCounterListLength,LPSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags); + +#define PDH_OBJECT_HAS_INSTANCES ((DWORD) 0x00000001) + + PDH_FUNCTION PdhMakeCounterPathW(PPDH_COUNTER_PATH_ELEMENTS_W pCounterPathElements,LPWSTR szFullPathBuffer,LPDWORD pcchBufferSize,DWORD dwFlags); + PDH_FUNCTION PdhMakeCounterPathA(PPDH_COUNTER_PATH_ELEMENTS_A pCounterPathElements,LPSTR szFullPathBuffer,LPDWORD pcchBufferSize,DWORD dwFlags); + PDH_FUNCTION PdhParseCounterPathW(LPCWSTR szFullPathBuffer,PPDH_COUNTER_PATH_ELEMENTS_W pCounterPathElements,LPDWORD pdwBufferSize,DWORD dwFlags); + PDH_FUNCTION PdhParseCounterPathA(LPCSTR szFullPathBuffer,PPDH_COUNTER_PATH_ELEMENTS_A pCounterPathElements,LPDWORD pdwBufferSize,DWORD dwFlags); + +#define PDH_PATH_WBEM_RESULT ((DWORD) 0x00000001) +#define PDH_PATH_WBEM_INPUT ((DWORD) 0x00000002) + +#define PDH_PATH_LANG_FLAGS(LangId,Flags) ((DWORD)(((LangId & 0x0000FFFF) << 16) | (Flags & 0x0000FFFF))) + + PDH_FUNCTION PdhParseInstanceNameW(LPCWSTR szInstanceString,LPWSTR szInstanceName,LPDWORD pcchInstanceNameLength,LPWSTR szParentName,LPDWORD pcchParentNameLength,LPDWORD lpIndex); + PDH_FUNCTION PdhParseInstanceNameA(LPCSTR szInstanceString,LPSTR szInstanceName,LPDWORD pcchInstanceNameLength,LPSTR szParentName,LPDWORD pcchParentNameLength,LPDWORD lpIndex); + PDH_FUNCTION PdhValidatePathW(LPCWSTR szFullPathBuffer); + PDH_FUNCTION PdhValidatePathA(LPCSTR szFullPathBuffer); + PDH_FUNCTION PdhGetDefaultPerfObjectW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPWSTR szDefaultObjectName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhGetDefaultPerfObjectA(LPCSTR szDataSource,LPCSTR szMachineName,LPSTR szDefaultObjectName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhGetDefaultPerfCounterW(LPCWSTR szDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR szDefaultCounterName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhGetDefaultPerfCounterA(LPCSTR szDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR szDefaultCounterName,LPDWORD pcchBufferSize); + + typedef PDH_STATUS (WINAPI *CounterPathCallBack)(DWORD_PTR); + + typedef struct _BrowseDlgConfig_HW { + DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved : 22; + HWND hWndOwner; + PDH_HLOG hDataSource; + LPWSTR szReturnPathBuffer; + DWORD cchReturnPathLength; + CounterPathCallBack pCallBack; + DWORD_PTR dwCallBackArg; + PDH_STATUS CallBackStatus; + DWORD dwDefaultDetailLevel; + LPWSTR szDialogBoxCaption; + } PDH_BROWSE_DLG_CONFIG_HW,*PPDH_BROWSE_DLG_CONFIG_HW; + + typedef struct _BrowseDlgConfig_HA { + DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved:22; + HWND hWndOwner; + PDH_HLOG hDataSource; + LPSTR szReturnPathBuffer; + DWORD cchReturnPathLength; + CounterPathCallBack pCallBack; + DWORD_PTR dwCallBackArg; + PDH_STATUS CallBackStatus; + DWORD dwDefaultDetailLevel; + LPSTR szDialogBoxCaption; + } PDH_BROWSE_DLG_CONFIG_HA,*PPDH_BROWSE_DLG_CONFIG_HA; + + typedef struct _BrowseDlgConfig_W { + DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved:22; + HWND hWndOwner; + LPWSTR szDataSource; + LPWSTR szReturnPathBuffer; + DWORD cchReturnPathLength; + CounterPathCallBack pCallBack; + DWORD_PTR dwCallBackArg; + PDH_STATUS CallBackStatus; + DWORD dwDefaultDetailLevel; + LPWSTR szDialogBoxCaption; + } PDH_BROWSE_DLG_CONFIG_W,*PPDH_BROWSE_DLG_CONFIG_W; + + typedef struct _BrowseDlgConfig_A { + DWORD bIncludeInstanceIndex : 1,bSingleCounterPerAdd : 1,bSingleCounterPerDialog : 1,bLocalCountersOnly : 1,bWildCardInstances : 1,bHideDetailBox : 1,bInitializePath : 1,bDisableMachineSelection : 1,bIncludeCostlyObjects : 1,bShowObjectBrowser : 1,bReserved:22; + HWND hWndOwner; + LPSTR szDataSource; + LPSTR szReturnPathBuffer; + DWORD cchReturnPathLength; + CounterPathCallBack pCallBack; + DWORD_PTR dwCallBackArg; + PDH_STATUS CallBackStatus; + DWORD dwDefaultDetailLevel; + LPSTR szDialogBoxCaption; + } PDH_BROWSE_DLG_CONFIG_A,*PPDH_BROWSE_DLG_CONFIG_A; + + PDH_FUNCTION PdhBrowseCountersW(PPDH_BROWSE_DLG_CONFIG_W pBrowseDlgData); + PDH_FUNCTION PdhBrowseCountersA(PPDH_BROWSE_DLG_CONFIG_A pBrowseDlgData); + PDH_FUNCTION PdhExpandCounterPathW(LPCWSTR szWildCardPath,LPWSTR mszExpandedPathList,LPDWORD pcchPathListLength); + PDH_FUNCTION PdhExpandCounterPathA(LPCSTR szWildCardPath,LPSTR mszExpandedPathList,LPDWORD pcchPathListLength); + PDH_FUNCTION PdhLookupPerfNameByIndexW(LPCWSTR szMachineName,DWORD dwNameIndex,LPWSTR szNameBuffer,LPDWORD pcchNameBufferSize); + PDH_FUNCTION PdhLookupPerfNameByIndexA(LPCSTR szMachineName,DWORD dwNameIndex,LPSTR szNameBuffer,LPDWORD pcchNameBufferSize); + PDH_FUNCTION PdhLookupPerfIndexByNameW(LPCWSTR szMachineName,LPCWSTR szNameBuffer,LPDWORD pdwIndex); + PDH_FUNCTION PdhLookupPerfIndexByNameA(LPCSTR szMachineName,LPCSTR szNameBuffer,LPDWORD pdwIndex); + +#define PDH_NOEXPANDCOUNTERS 1 +#define PDH_NOEXPANDINSTANCES 2 +#define PDH_REFRESHCOUNTERS 4 + + PDH_FUNCTION PdhExpandWildCardPathA(LPCSTR szDataSource,LPCSTR szWildCardPath,LPSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags); + PDH_FUNCTION PdhExpandWildCardPathW(LPCWSTR szDataSource,LPCWSTR szWildCardPath,LPWSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags); + +#define PDH_LOG_READ_ACCESS ((DWORD) 0x00010000) +#define PDH_LOG_WRITE_ACCESS ((DWORD) 0x00020000) +#define PDH_LOG_UPDATE_ACCESS ((DWORD) 0x00040000) +#define PDH_LOG_ACCESS_MASK ((DWORD) 0x000F0000) + +#define PDH_LOG_CREATE_NEW ((DWORD) 0x00000001) +#define PDH_LOG_CREATE_ALWAYS ((DWORD) 0x00000002) +#define PDH_LOG_OPEN_ALWAYS ((DWORD) 0x00000003) +#define PDH_LOG_OPEN_EXISTING ((DWORD) 0x00000004) +#define PDH_LOG_CREATE_MASK ((DWORD) 0x0000000F) + +#define PDH_LOG_OPT_USER_STRING ((DWORD) 0x01000000) +#define PDH_LOG_OPT_CIRCULAR ((DWORD) 0x02000000) +#define PDH_LOG_OPT_MAX_IS_BYTES ((DWORD) 0x04000000) +#define PDH_LOG_OPT_APPEND ((DWORD) 0x08000000) +#define PDH_LOG_OPT_MASK ((DWORD) 0x0F000000) + +#define PDH_LOG_TYPE_UNDEFINED 0 +#define PDH_LOG_TYPE_CSV 1 +#define PDH_LOG_TYPE_TSV 2 + +#define PDH_LOG_TYPE_TRACE_KERNEL 4 +#define PDH_LOG_TYPE_TRACE_GENERIC 5 +#define PDH_LOG_TYPE_PERFMON 6 +#define PDH_LOG_TYPE_SQL 7 +#define PDH_LOG_TYPE_BINARY 8 + + PDH_FUNCTION PdhOpenLogW(LPCWSTR szLogFileName,DWORD dwAccessFlags,LPDWORD lpdwLogType,PDH_HQUERY hQuery,DWORD dwMaxSize,LPCWSTR szUserCaption,PDH_HLOG *phLog); + PDH_FUNCTION PdhOpenLogA(LPCSTR szLogFileName,DWORD dwAccessFlags,LPDWORD lpdwLogType,PDH_HQUERY hQuery,DWORD dwMaxSize,LPCSTR szUserCaption,PDH_HLOG *phLog); + PDH_FUNCTION PdhUpdateLogW(PDH_HLOG hLog,LPCWSTR szUserString); + PDH_FUNCTION PdhUpdateLogA(PDH_HLOG hLog,LPCSTR szUserString); + PDH_FUNCTION PdhUpdateLogFileCatalog(PDH_HLOG hLog); + PDH_FUNCTION PdhGetLogFileSize(PDH_HLOG hLog,LONGLONG *llSize); + PDH_FUNCTION PdhCloseLog(PDH_HLOG hLog,DWORD dwFlags); + +#define PDH_FLAGS_CLOSE_QUERY ((DWORD) 0x00000001) +#define PDH_FLAGS_FILE_BROWSER_ONLY ((DWORD) 0x00000001) + + PDH_FUNCTION PdhSelectDataSourceW(HWND hWndOwner,DWORD dwFlags,LPWSTR szDataSource,LPDWORD pcchBufferLength); + PDH_FUNCTION PdhSelectDataSourceA(HWND hWndOwner,DWORD dwFlags,LPSTR szDataSource,LPDWORD pcchBufferLength); + WINBOOL PdhIsRealTimeQuery(PDH_HQUERY hQuery); + PDH_FUNCTION PdhSetQueryTimeRange(PDH_HQUERY hQuery,PPDH_TIME_INFO pInfo); + PDH_FUNCTION PdhGetDataSourceTimeRangeW(LPCWSTR szDataSource,LPDWORD pdwNumEntries,PPDH_TIME_INFO pInfo,LPDWORD pdwBufferSize); + PDH_FUNCTION PdhGetDataSourceTimeRangeA(LPCSTR szDataSource,LPDWORD pdwNumEntries,PPDH_TIME_INFO pInfo,LPDWORD dwBufferSize); + PDH_FUNCTION PdhCollectQueryDataEx(PDH_HQUERY hQuery,DWORD dwIntervalTime,HANDLE hNewDataEvent); + PDH_FUNCTION PdhFormatFromRawValue(DWORD dwCounterType,DWORD dwFormat,LONGLONG *pTimeBase,PPDH_RAW_COUNTER pRawValue1,PPDH_RAW_COUNTER pRawValue2,PPDH_FMT_COUNTERVALUE pFmtValue); + PDH_FUNCTION PdhGetCounterTimeBase(PDH_HCOUNTER hCounter,LONGLONG *pTimeBase); + PDH_FUNCTION PdhReadRawLogRecord(PDH_HLOG hLog,FILETIME ftRecord,PPDH_RAW_LOG_RECORD pRawLogRecord,LPDWORD pdwBufferLength); + +#define DATA_SOURCE_REGISTRY ((DWORD) 0x00000001) +#define DATA_SOURCE_LOGFILE ((DWORD) 0x00000002) +#define DATA_SOURCE_WBEM ((DWORD) 0x00000004) + + PDH_FUNCTION PdhSetDefaultRealTimeDataSource(DWORD dwDataSourceId); + PDH_FUNCTION PdhBindInputDataSourceW(PDH_HLOG *phDataSource,LPCWSTR LogFileNameList); + PDH_FUNCTION PdhBindInputDataSourceA(PDH_HLOG *phDataSource,LPCSTR LogFileNameList); + PDH_FUNCTION PdhOpenQueryH(PDH_HLOG hDataSource,DWORD_PTR dwUserData,PDH_HQUERY *phQuery); + PDH_FUNCTION PdhEnumMachinesHW(PDH_HLOG hDataSource,LPWSTR mszMachineList,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhEnumMachinesHA(PDH_HLOG hDataSource,LPSTR mszMachineList,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhEnumObjectsHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPWSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh); + PDH_FUNCTION PdhEnumObjectsHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPSTR mszObjectList,LPDWORD pcchBufferSize,DWORD dwDetailLevel,WINBOOL bRefresh); + PDH_FUNCTION PdhEnumObjectItemsHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR mszCounterList,LPDWORD pcchCounterListLength,LPWSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags); + PDH_FUNCTION PdhEnumObjectItemsHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR mszCounterList,LPDWORD pcchCounterListLength,LPSTR mszInstanceList,LPDWORD pcchInstanceListLength,DWORD dwDetailLevel,DWORD dwFlags); + PDH_FUNCTION PdhExpandWildCardPathHW(PDH_HLOG hDataSource,LPCWSTR szWildCardPath,LPWSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags); + PDH_FUNCTION PdhExpandWildCardPathHA(PDH_HLOG hDataSource,LPCSTR szWildCardPath,LPSTR mszExpandedPathList,LPDWORD pcchPathListLength,DWORD dwFlags); + PDH_FUNCTION PdhGetDataSourceTimeRangeH(PDH_HLOG hDataSource,LPDWORD pdwNumEntries,PPDH_TIME_INFO pInfo,LPDWORD pdwBufferSize); + PDH_FUNCTION PdhGetDefaultPerfObjectHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPWSTR szDefaultObjectName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhGetDefaultPerfObjectHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPSTR szDefaultObjectName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhGetDefaultPerfCounterHW(PDH_HLOG hDataSource,LPCWSTR szMachineName,LPCWSTR szObjectName,LPWSTR szDefaultCounterName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhGetDefaultPerfCounterHA(PDH_HLOG hDataSource,LPCSTR szMachineName,LPCSTR szObjectName,LPSTR szDefaultCounterName,LPDWORD pcchBufferSize); + PDH_FUNCTION PdhBrowseCountersHW(PPDH_BROWSE_DLG_CONFIG_HW pBrowseDlgData); + PDH_FUNCTION PdhBrowseCountersHA(PPDH_BROWSE_DLG_CONFIG_HA pBrowseDlgData); + PDH_FUNCTION PdhVerifySQLDBW(LPCWSTR szDataSource); + PDH_FUNCTION PdhVerifySQLDBA(LPCSTR szDataSource); + PDH_FUNCTION PdhCreateSQLTablesW(LPCWSTR szDataSource); + PDH_FUNCTION PdhCreateSQLTablesA(LPCSTR szDataSource); + PDH_FUNCTION PdhEnumLogSetNamesW(LPCWSTR szDataSource,LPWSTR mszDataSetNameList,LPDWORD pcchBufferLength); + PDH_FUNCTION PdhEnumLogSetNamesA(LPCSTR szDataSource,LPSTR mszDataSetNameList,LPDWORD pcchBufferLength); + PDH_FUNCTION PdhGetLogSetGUID(PDH_HLOG hLog,GUID *pGuid,int *pRunId); + PDH_FUNCTION PdhSetLogSetRunID(PDH_HLOG hLog,int RunId); + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +#ifdef _UNICODE +#ifndef UNICODE +#define UNICODE +#endif +#endif + +#ifdef UNICODE + +#define PdhOpenQuery PdhOpenQueryW +#define PdhAddCounter PdhAddCounterW +#define PdhGetCounterInfo PdhGetCounterInfoW +#define PDH_COUNTER_INFO PDH_COUNTER_INFO_W +#define PPDH_COUNTER_INFO PPDH_COUNTER_INFO_W +#define PdhConnectMachine PdhConnectMachineW +#define PdhEnumMachines PdhEnumMachinesW +#define PdhEnumObjects PdhEnumObjectsW +#define PdhEnumObjectItems PdhEnumObjectItemsW +#define PdhMakeCounterPath PdhMakeCounterPathW +#define PDH_COUNTER_PATH_ELEMENTS PDH_COUNTER_PATH_ELEMENTS_W +#define PPDH_COUNTER_PATH_ELEMENTS PPDH_COUNTER_PATH_ELEMENTS_W +#define PdhParseCounterPath PdhParseCounterPathW +#define PdhParseInstanceName PdhParseInstanceNameW +#define PdhValidatePath PdhValidatePathW +#define PdhGetDefaultPerfObject PdhGetDefaultPerfObjectW +#define PdhGetDefaultPerfCounter PdhGetDefaultPerfCounterW +#define PdhBrowseCounters PdhBrowseCountersW +#define PdhBrowseCountersH PdhBrowseCountersHW +#define PDH_BROWSE_DLG_CONFIG PDH_BROWSE_DLG_CONFIG_W +#define PPDH_BROWSE_DLG_CONFIG PPDH_BROWSE_DLG_CONFIG_W +#define PDH_BROWSE_DLG_CONFIG_H PDH_BROWSE_DLG_CONFIG_HW +#define PPDH_BROWSE_DLG_CONFIG_H PPDH_BROWSE_DLG_CONFIG_HW +#define PdhExpandCounterPath PdhExpandCounterPathW + +#define PDH_FMT_COUNTERVALUE_ITEM PDH_FMT_COUNTERVALUE_ITEM_W +#define PPDH_FMT_COUNTERVALUE_ITEM PPDH_FMT_COUNTERVALUE_ITEM_W +#define PDH_RAW_COUNTER_ITEM PDH_RAW_COUNTER_ITEM_W +#define PPDH_RAW_COUNTER_ITEM PPDH_RAW_COUNTER_ITEM_W +#define PdhGetFormattedCounterArray PdhGetFormattedCounterArrayW +#define PdhGetRawCounterArray PdhGetRawCounterArrayW +#define PdhLookupPerfNameByIndex PdhLookupPerfNameByIndexW +#define PdhLookupPerfIndexByName PdhLookupPerfIndexByNameW +#define PdhOpenLog PdhOpenLogW +#define PdhUpdateLog PdhUpdateLogW +#define PdhSelectDataSource PdhSelectDataSourceW +#define PdhGetDataSourceTimeRange PdhGetDataSourceTimeRangeW +#define PDH_LOG_SERVICE_QUERY_INFO PDH_LOG_SERVICE_QUERY_INFO_W +#define PPDH_LOG_SERVICE_QUERY_INFO PPDH_LOG_SERVICE_QUERY_INFO_W +#define PdhLogServiceControl PdhLogServiceControlW +#define PdhLogServiceQuery PdhLogServiceQueryW +#define PdhExpandWildCardPath PdhExpandWildCardPathW +#define PdhBindInputDataSource PdhBindInputDataSourceW +#define PdhEnumMachinesH PdhEnumMachinesHW +#define PdhEnumObjectsH PdhEnumObjectsHW +#define PdhEnumObjectItemsH PdhEnumObjectItemsHW +#define PdhExpandWildCardPathH PdhExpandWildCardPathHW +#define PdhGetDefaultPerfObjectH PdhGetDefaultPerfObjectHW +#define PdhGetDefaultPerfCounterH PdhGetDefaultPerfCounterHW +#define PdhEnumLogSetNames PdhEnumLogSetNamesW +#define PdhCreateSQLTables PdhCreateSQLTablesW +#define PdhVerifySQLDB PdhVerifySQLDBW +#else + +#define PdhOpenQuery PdhOpenQueryA +#define PdhAddCounter PdhAddCounterA +#define PdhGetCounterInfo PdhGetCounterInfoA +#define PDH_COUNTER_INFO PDH_COUNTER_INFO_A +#define PPDH_COUNTER_INFO PPDH_COUNTER_INFO_A +#define PdhConnectMachine PdhConnectMachineA +#define PdhEnumMachines PdhEnumMachinesA +#define PdhEnumObjects PdhEnumObjectsA +#define PdhEnumObjectItems PdhEnumObjectItemsA +#define PdhMakeCounterPath PdhMakeCounterPathA +#define PDH_COUNTER_PATH_ELEMENTS PDH_COUNTER_PATH_ELEMENTS_A +#define PPDH_COUNTER_PATH_ELEMENTS PPDH_COUNTER_PATH_ELEMENTS_A +#define PdhParseCounterPath PdhParseCounterPathA +#define PdhParseInstanceName PdhParseInstanceNameA +#define PdhValidatePath PdhValidatePathA +#define PdhGetDefaultPerfObject PdhGetDefaultPerfObjectA +#define PdhGetDefaultPerfCounter PdhGetDefaultPerfCounterA +#define PdhBrowseCounters PdhBrowseCountersA +#define PdhBrowseCountersH PdhBrowseCountersHA +#define PDH_BROWSE_DLG_CONFIG PDH_BROWSE_DLG_CONFIG_A +#define PPDH_BROWSE_DLG_CONFIG PPDH_BROWSE_DLG_CONFIG_A +#define PDH_BROWSE_DLG_CONFIG_H PDH_BROWSE_DLG_CONFIG_HA +#define PPDH_BROWSE_DLG_CONFIG_H PPDH_BROWSE_DLG_CONFIG_HA +#define PdhExpandCounterPath PdhExpandCounterPathA + +#define PDH_FMT_COUNTERVALUE_ITEM PDH_FMT_COUNTERVALUE_ITEM_A +#define PPDH_FMT_COUNTERVALUE_ITEM PPDH_FMT_COUNTERVALUE_ITEM_A +#define PDH_RAW_COUNTER_ITEM PDH_RAW_COUNTER_ITEM_A +#define PPDH_RAW_COUNTER_ITEM PPDH_RAW_COUNTER_ITEM_A +#define PdhGetFormattedCounterArray PdhGetFormattedCounterArrayA +#define PdhGetRawCounterArray PdhGetRawCounterArrayA +#define PdhLookupPerfNameByIndex PdhLookupPerfNameByIndexA +#define PdhLookupPerfIndexByName PdhLookupPerfIndexByNameA +#define PdhOpenLog PdhOpenLogA +#define PdhUpdateLog PdhUpdateLogA +#define PdhSelectDataSource PdhSelectDataSourceA +#define PdhGetDataSourceTimeRange PdhGetDataSourceTimeRangeA +#define PDH_LOG_SERVICE_QUERY_INFO PDH_LOG_SERVICE_QUERY_INFO_A +#define PPDH_LOG_SERVICE_QUERY_INFO PPDH_LOG_SERVICE_QUERY_INFO_A +#define PdhLogServiceControl PdhLogServiceControlA +#define PdhLogServiceQuery PdhLogServiceQueryA +#define PdhExpandWildCardPath PdhExpandWildCardPathA +#define PdhBindInputDataSource PdhBindInputDataSourceA +#define PdhEnumMachinesH PdhEnumMachinesHA +#define PdhEnumObjectsH PdhEnumObjectsHA +#define PdhEnumObjectItemsH PdhEnumObjectItemsHA +#define PdhExpandWildCardPathH PdhExpandWildCardPathHA +#define PdhGetDefaultPerfObjectH PdhGetDefaultPerfObjectHA +#define PdhGetDefaultPerfCounterH PdhGetDefaultPerfCounterHA +#define PdhEnumLogSetNames PdhEnumLogSetNamesA +#define PdhCreateSQLTables PdhCreateSQLTablesA +#define PdhVerifySQLDB PdhVerifySQLDBA +#endif + +#ifdef __cplusplus +} +#endif +#endif
