// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Common Performance Data Helper definitions use ctypes::c_double; use shared::basetsd::DWORD_PTR; use shared::guiddef::GUID; use shared::minwindef::{BOOL, DWORD, FILETIME, LPDWORD, UCHAR}; use shared::windef::HWND; use um::winnt::{BOOLEAN, HANDLE, LONG, LONGLONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR}; pub const PDH_FMT_RAW: DWORD = 0x00000010; pub const PDH_FMT_ANSI: DWORD = 0x00000020; pub const PDH_FMT_UNICODE: DWORD = 0x00000040; pub const PDH_FMT_LONG: DWORD = 0x00000100; pub const PDH_FMT_DOUBLE: DWORD = 0x00000200; pub const PDH_FMT_LARGE: DWORD = 0x00000400; pub const PDH_FMT_NOSCALE: DWORD = 0x00001000; pub const PDH_FMT_1000: DWORD = 0x00002000; pub const PDH_FMT_NODATA: DWORD = 0x00004000; pub const PDH_FMT_NOCAP100: DWORD = 0x00008000; pub const PERF_DETAIL_COSTLY: DWORD = 0x00010000; pub const PERF_DETAIL_STANDARD: DWORD = 0x0000FFFF; pub type PDH_STATUS = LONG; pub type PDH_HQUERY = HANDLE; pub type HQUERY = PDH_HQUERY; pub type PDH_HCOUNTER = HANDLE; pub type HCOUNTER = PDH_HCOUNTER; pub type PPDH_BROWSE_DLG_CONFIG_A = *mut PDH_BROWSE_DLG_CONFIG_A; pub type PPDH_BROWSE_DLG_CONFIG_W = *mut PDH_BROWSE_DLG_CONFIG_W; pub type PDH_HLOG = HANDLE; pub type PPDH_RAW_LOG_RECORD = *mut PDH_RAW_LOG_RECORD; pub type PPDH_TIME_INFO = *mut PDH_TIME_INFO; pub type PPDH_RAW_COUNTER = *mut PDH_RAW_COUNTER; pub type PPDH_COUNTER_INFO_A = *mut PDH_COUNTER_INFO_A; pub type PPDH_COUNTER_INFO_W = *mut PDH_COUNTER_INFO_W; pub type PPDH_STATISTICS = *mut PDH_STATISTICS; pub type PPDH_FMT_COUNTERVALUE_ITEM_A = *mut PDH_FMT_COUNTERVALUE_ITEM_A; pub type PPDH_FMT_COUNTERVALUE_ITEM_W = *mut PDH_FMT_COUNTERVALUE_ITEM_W; pub type PPDH_DATA_ITEM_PATH_ELEMENTS_A = *mut PDH_DATA_ITEM_PATH_ELEMENTS_A; pub type PPDH_DATA_ITEM_PATH_ELEMENTS_W = *mut PDH_DATA_ITEM_PATH_ELEMENTS_W; pub type PPDH_FMT_COUNTERVALUE = *mut PDH_FMT_COUNTERVALUE; FN!{stdcall CounterPathCallBack( DWORD_PTR, ) -> PDH_STATUS} pub type PPDH_COUNTER_PATH_ELEMENTS_A = *mut PDH_COUNTER_PATH_ELEMENTS_A; pub type PPDH_COUNTER_PATH_ELEMENTS_W = *mut PDH_COUNTER_PATH_ELEMENTS_W; pub type PPDH_BROWSE_DLG_CONFIG_HA = *mut PDH_BROWSE_DLG_CONFIG_HA; pub type PPDH_BROWSE_DLG_CONFIG_HW = *mut PDH_BROWSE_DLG_CONFIG_HW; UNION!{union PDH_FMT_COUNTERVALUE_u { [u64; 1], longValue longValue_mut: LONG, doubleValue doubleValue_mut: c_double, largeValue largeValue_mut: LONGLONG, AnsiStringValue AnsiStringValue_mut: LPCSTR, WideStringValue WideStringValue_mut: LPCWSTR, }} STRUCT!{struct PDH_FMT_COUNTERVALUE { CStatus: DWORD, u: PDH_FMT_COUNTERVALUE_u, }} STRUCT!{struct PDH_RAW_LOG_RECORD { dwStructureSize: DWORD, dwRecordType: DWORD, dwItems: DWORD, RawBytes: UCHAR, }} STRUCT!{struct PDH_TIME_INFO { StartTime: LONGLONG, EndTime: LONGLONG, SampleCount: DWORD, }} STRUCT!{struct PDH_RAW_COUNTER { CStatus: DWORD, TimeStamp: FILETIME, FirstValue: LONGLONG, SecondValue: LONGLONG, MultiCount: DWORD, }} STRUCT!{struct PDH_STATISTICS { dwFormat: DWORD, count: DWORD, min: PDH_FMT_COUNTERVALUE, max: PDH_FMT_COUNTERVALUE, mean: PDH_FMT_COUNTERVALUE, }} STRUCT!{struct PDH_FMT_COUNTERVALUE_ITEM_A { szName: LPSTR, FmtValue: PDH_FMT_COUNTERVALUE, }} STRUCT!{struct PDH_FMT_COUNTERVALUE_ITEM_W { szName: LPWSTR, FmtValue: PDH_FMT_COUNTERVALUE, }} STRUCT!{struct PDH_BROWSE_DLG_CONFIG_A { flags: DWORD, hWndOwner: HWND, szDataSource: LPSTR, szReturnPathBuffer: LPSTR, cchReturnPathLength: DWORD, pCallBack: CounterPathCallBack, dwCallBackArg: DWORD_PTR, CallBackStatus: PDH_STATUS, dwDefaultDetailLevel: DWORD, szDialogBoxCaption: LPSTR, }} BITFIELD!{PDH_BROWSE_DLG_CONFIG_A flags: DWORD [ IncludeInstanceIndex set_IncludeInstanceIndex[0..1], SingleCounterPerAdd set_SingleCounterPerAdd[1..2], SingleCounterPerDialog set_SingleCounterPerDialog[2..3], LocalCountersOnly set_LocalCountersOnly[3..4], WildCardInstances set_WildCardInstances[4..5], HideDetailBox set_HideDetailBox[5..6], InitializePath set_InitializePath[6..7], DisableMachineSelection set_DisableMachineSelection[7..8], IncludeCostlyObjects set_IncludeCostlyObjects[8..9], ShowObjectBrowser set_ShowObjectBrowser[9..10], ]} STRUCT!{struct PDH_BROWSE_DLG_CONFIG_W { flags: DWORD, hWndOwner: HWND, szDataSource: LPWSTR, szReturnPathBuffer: LPWSTR, cchReturnPathLength: DWORD, pCallBack: CounterPathCallBack, dwCallBackArg: DWORD_PTR, CallBackStatus: PDH_STATUS, dwDefaultDetailLevel: DWORD, szDialogBoxCaption: LPWSTR, }} BITFIELD!{PDH_BROWSE_DLG_CONFIG_W flags: DWORD [ IncludeInstanceIndex set_IncludeInstanceIndex[0..1], SingleCounterPerAdd set_SingleCounterPerAdd[1..2], SingleCounterPerDialog set_SingleCounterPerDialog[2..3], LocalCountersOnly set_LocalCountersOnly[3..4], WildCardInstances set_WildCardInstances[4..5], HideDetailBox set_HideDetailBox[5..6], InitializePath set_InitializePath[6..7], DisableMachineSelection set_DisableMachineSelection[7..8], IncludeCostlyObjects set_IncludeCostlyObjects[8..9], ShowObjectBrowser set_ShowObjectBrowser[9..10], ]} STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_A { szMachineName: LPSTR, szObjectName: LPSTR, szInstanceName: LPSTR, szParentInstance: LPSTR, dwInstanceIndex: DWORD, szCounterName: LPSTR, }} STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_W { szMachineName: LPWSTR, szObjectName: LPWSTR, szInstanceName: LPWSTR, szParentInstance: LPWSTR, dwInstanceIndex: DWORD, szCounterName: LPWSTR, }} STRUCT!{struct PDH_DATA_ITEM_PATH_ELEMENTS_A { szMachineName: LPSTR, ObjectGUID: GUID, dwItemId: DWORD, szInstanceName: LPSTR, }} STRUCT!{struct PDH_DATA_ITEM_PATH_ELEMENTS_W { szMachineName: LPWSTR, ObjectGUID: GUID, dwItemId: DWORD, szInstanceName: LPWSTR, }} STRUCT!{struct PDH_COUNTER_INFO_A_u_s { szMachineName: LPSTR, szObjectName: LPSTR, szInstanceName: LPSTR, szParentInstance: LPSTR, dwInstanceIndex: DWORD, szCounterName: LPSTR, }} UNION!{union PDH_COUNTER_INFO_A_u { [u32; 7] [u64; 6], DataItemPath DataItemPath_mut: PDH_DATA_ITEM_PATH_ELEMENTS_A, CounterPath CounterPath_mut: PDH_COUNTER_PATH_ELEMENTS_A, s s_mut: PDH_COUNTER_INFO_A_u_s, }} STRUCT!{struct PDH_COUNTER_INFO_A { dwLength: DWORD, dwType: DWORD, CVersion: DWORD, CStatus: DWORD, lScale: LONG, lDefaultScale: LONG, dwUserData: DWORD_PTR, dwQueryUserData: DWORD_PTR, szFullPath: LPSTR, u: PDH_COUNTER_INFO_A_u, szExplainText: LPSTR, DataBuffer: [DWORD; 1], }} STRUCT!{struct PDH_COUNTER_INFO_W_u_s { szMachineName: LPWSTR, szObjectName: LPWSTR, szInstanceName: LPWSTR, szParentInstance: LPWSTR, dwInstanceIndex: DWORD, szCounterName: LPWSTR, }} UNION!{union PDH_COUNTER_INFO_W_u { [u32; 7] [u64; 6], DataItemPath DataItemPath_mut: PDH_DATA_ITEM_PATH_ELEMENTS_W, CounterPath CounterPath_mut: PDH_COUNTER_PATH_ELEMENTS_W, s s_mut: PDH_COUNTER_INFO_W_u_s, }} STRUCT!{struct PDH_COUNTER_INFO_W { dwLength: DWORD, dwType: DWORD, CVersion: DWORD, CStatus: DWORD, lScale: LONG, lDefaultScale: LONG, dwUserData: DWORD_PTR, dwQueryUserData: DWORD_PTR, szFullPath: LPWSTR, u: PDH_COUNTER_INFO_W_u, szExplainText: LPWSTR, DataBuffer: [DWORD; 1], }} STRUCT!{struct PDH_BROWSE_DLG_CONFIG_HA { flags: DWORD, hWndOwner: HWND, hDataSource: PDH_HLOG, szReturnPathBuffer: LPSTR, cchReturnPathLength: DWORD, pCallBack: CounterPathCallBack, dwCallBackArg: DWORD_PTR, CallBackStatus: PDH_STATUS, dwDefaultDetailLevel: DWORD, szDialogBoxCaption: LPSTR, }} BITFIELD!{PDH_BROWSE_DLG_CONFIG_HA flags: DWORD [ IncludeInstanceIndex set_IncludeInstanceIndex[0..1], SingleCounterPerAdd set_SingleCounterPerAdd[1..2], SingleCounterPerDialog set_SingleCounterPerDialog[2..3], LocalCountersOnly set_LocalCountersOnly[3..4], WildCardInstances set_WildCardInstances[4..5], HideDetailBox set_HideDetailBox[5..6], InitializePath set_InitializePath[6..7], DisableMachineSelection set_DisableMachineSelection[7..8], IncludeCostlyObjects set_IncludeCostlyObjects[8..9], ShowObjectBrowser set_ShowObjectBrowser[9..10], ]} STRUCT!{struct PDH_BROWSE_DLG_CONFIG_HW { flags: DWORD, hWndOwner: HWND, hDataSource: PDH_HLOG, szReturnPathBuffer: LPWSTR, cchReturnPathLength: DWORD, pCallBack: CounterPathCallBack, dwCallBackArg: DWORD_PTR, CallBackStatus: PDH_STATUS, dwDefaultDetailLevel: DWORD, szDialogBoxCaption: LPWSTR, }} BITFIELD!{PDH_BROWSE_DLG_CONFIG_HW flags: DWORD [ IncludeInstanceIndex set_IncludeInstanceIndex[0..1], SingleCounterPerAdd set_SingleCounterPerAdd[1..2], SingleCounterPerDialog set_SingleCounterPerDialog[2..3], LocalCountersOnly set_LocalCountersOnly[3..4], WildCardInstances set_WildCardInstances[4..5], HideDetailBox set_HideDetailBox[5..6], InitializePath set_InitializePath[6..7], DisableMachineSelection set_DisableMachineSelection[7..8], IncludeCostlyObjects set_IncludeCostlyObjects[8..9], ShowObjectBrowser set_ShowObjectBrowser[9..10], ]} extern "system" { pub fn PdhGetDllVersion( lpdwVersion: LPDWORD, ) -> PDH_STATUS; pub fn PdhOpenQueryW( szDataSource: LPCWSTR, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS; pub fn PdhOpenQueryA( szDataSource: LPCSTR, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS; pub fn PdhAddCounterW( hQuery: PDH_HQUERY, szFullCounterPath: LPCWSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS; pub fn PdhAddCounterA( hQuery: PDH_HQUERY, szFullCounterPath: LPCSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS; pub fn PdhAddEnglishCounterW( hQuery: PDH_HQUERY, szFullCounterPath: LPCWSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS; pub fn PdhAddEnglishCounterA( hQuery: PDH_HQUERY, szFullCounterPath: LPCSTR, dwUserData: DWORD_PTR, phCounter: *mut PDH_HCOUNTER, ) -> PDH_STATUS; pub fn PdhCollectQueryDataWithTime( hQuery: PDH_HQUERY, pllTimeStamp: *mut LONGLONG, ) -> PDH_STATUS; pub fn PdhValidatePathExW( hDataSource: PDH_HLOG, szFullPathBuffer: LPCWSTR, ) -> PDH_STATUS; pub fn PdhValidatePathExA( hDataSource: PDH_HLOG, szFullPathBuffer: LPCSTR, ) -> PDH_STATUS; pub fn PdhRemoveCounter( hCounter: PDH_HCOUNTER, ) -> PDH_STATUS; pub fn PdhCollectQueryData( hQuery: PDH_HQUERY, ) -> PDH_STATUS; pub fn PdhCloseQuery( hQuery: PDH_HQUERY, ) -> PDH_STATUS; pub fn PdhGetFormattedCounterValue( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwType: LPDWORD, pValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS; pub fn PdhGetFormattedCounterArrayA( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A, ) -> PDH_STATUS; pub fn PdhGetFormattedCounterArrayW( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W, ) -> PDH_STATUS; pub fn PdhGetRawCounterValue( hCounter: PDH_HCOUNTER, lpdwType: LPDWORD, pValue: PPDH_RAW_COUNTER, ) -> PDH_STATUS; pub fn PdhGetRawCounterArrayA( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_A, ) -> PDH_STATUS; pub fn PdhGetRawCounterArrayW( hCounter: PDH_HCOUNTER, dwFormat: DWORD, lpdwBufferSize: LPDWORD, lpdwBufferCount: LPDWORD, ItemBuffer: PPDH_FMT_COUNTERVALUE_ITEM_W, ) -> PDH_STATUS; pub fn PdhCalculateCounterFromRawValue( hCounter: PDH_HCOUNTER, dwFormat: DWORD, rawValue1: PPDH_RAW_COUNTER, rawValue2: PPDH_RAW_COUNTER, fmtValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS; pub fn PdhComputeCounterStatistics( hCounter: PDH_HCOUNTER, dwFormat: DWORD, dwFirstEntry: DWORD, dwNumEntries: DWORD, lpRawValueArray: PPDH_RAW_COUNTER, data: PPDH_STATISTICS, ) -> PDH_STATUS; pub fn PdhGetCounterInfoW( hCounter: PDH_HCOUNTER, bRetrieveExplainText: BOOLEAN, pdwBufferSize: LPDWORD, lpBuffer: PPDH_COUNTER_INFO_W, ) -> PDH_STATUS; pub fn PdhGetCounterInfoA( hCounter: PDH_HCOUNTER, bRetrieveExplainText: BOOLEAN, pdwBufferSize: LPDWORD, lpBuffer: PPDH_COUNTER_INFO_A, ) -> PDH_STATUS; pub fn PdhSetCounterScaleFactor( hCounter: PDH_HCOUNTER, lFactor: LONG, ) -> PDH_STATUS; pub fn PdhConnectMachineW( szMachineName: LPCWSTR, ) -> PDH_STATUS; pub fn PdhConnectMachineA( szMachineName: LPCSTR, ) -> PDH_STATUS; pub fn PdhEnumMachinesW( szDataSource: LPCWSTR, mszMachineNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhEnumMachinesA( szDataSource: LPCSTR, mszMachineNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhEnumObjectsW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, mszObjectList: LPWSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS; pub fn PdhEnumObjectsA( szDataSource: LPCSTR, szMachineName: LPCSTR, mszObjectList: LPSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS; pub fn PdhEnumObjectItemsW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szObjectName: LPCWSTR, mszCounterList: LPWSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPWSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhEnumObjectItemsA( szDataSource: LPCSTR, szMachineName: LPCSTR, szObjectName: LPCSTR, mszCounterList: LPSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhMakeCounterPathW( pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_W, szFullPathBuffer: LPWSTR, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhMakeCounterPathA( pCounterPathElements: PPDH_COUNTER_PATH_ELEMENTS_A, szFullPathBuffer: LPSTR, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhParseCounterPathW( szFullPathBuffer: LPCWSTR, pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_W, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhParseCounterPathA( szFullPathBuffer: LPCSTR, pCounterPathElements: *mut PDH_COUNTER_PATH_ELEMENTS_A, pcchBufferSize: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhParseInstanceNameW( szInstanceString: LPCWSTR, szInstanceName: LPWSTR, pcchInstanceNameLength: LPDWORD, szParentName: LPWSTR, pcchParentNameLength: LPDWORD, lpIndex: LPDWORD, ) -> PDH_STATUS; pub fn PdhParseInstanceNameA( szInstanceString: LPCSTR, szInstanceName: LPSTR, pcchInstanceNameLength: LPDWORD, szParentName: LPSTR, pcchParentNameLength: LPDWORD, lpIndex: LPDWORD, ) -> PDH_STATUS; pub fn PdhValidatePathW( szFullCounterPath: LPCWSTR, ) -> PDH_STATUS; pub fn PdhValidatePathA( szFullCounterPath: LPCSTR, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfObjectW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szDefaultObjectName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfObjectA( szDataSource: LPCSTR, szMachineName: LPCSTR, szDefaultObjectName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfCounterW( szDataSource: LPCWSTR, szMachineName: LPCWSTR, szObjectName: LPCWSTR, szDefaultCounterName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfCounterA( szDataSource: LPCSTR, szMachineName: LPCSTR, szObjectName: LPCSTR, szDefaultCounterName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhBrowseCountersW( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_W, ) -> PDH_STATUS; pub fn PdhBrowseCountersA( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_A, ) -> PDH_STATUS; pub fn PdhExpandCounterPathW( szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhExpandCounterPathA( szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhLookupPerfNameByIndexW( szMachineName: LPCWSTR, dwNameIndex: DWORD, szNameBuffer: LPWSTR, pcchNameBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhLookupPerfNameByIndexA( szMachineName: LPCSTR, dwNameIndex: DWORD, szNameBuffer: LPSTR, pcchNameBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhLookupPerfIndexByNameW( szMachineName: LPCWSTR, szNameBuffer: LPCWSTR, pdwIndex: LPDWORD, ) -> PDH_STATUS; pub fn PdhLookupPerfIndexByNameA( szMachineName: LPCSTR, szNameBuffer: LPCSTR, pdwIndex: LPDWORD, ) -> PDH_STATUS; pub fn PdhExpandWildCardPathW( szDataSource: LPCWSTR, szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhExpandWildCardPathA( szDataSource: LPCSTR, szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhOpenLogW( szLogFileName: LPCWSTR, dwAccessFlags: DWORD, lpdwLogType: LPDWORD, hQuery: PDH_HQUERY, dwMaxSize: DWORD, szUserCaption: LPCWSTR, phLog: *mut PDH_HLOG, ) -> PDH_STATUS; pub fn PdhOpenLogA( szLogFileName: LPCSTR, dwAccessFlags: DWORD, lpdwLogType: LPDWORD, hQuery: PDH_HQUERY, dwMaxSize: DWORD, szUserCaption: LPCSTR, phLog: *mut PDH_HLOG, ) -> PDH_STATUS; pub fn PdhUpdateLogW( hLog: PDH_HLOG, szUserString: LPCWSTR, ) -> PDH_STATUS; pub fn PdhUpdateLogA( hLog: PDH_HLOG, szUserString: LPCSTR, ) -> PDH_STATUS; pub fn PdhUpdateLogFileCatalog( hLog: PDH_HLOG, ) -> PDH_STATUS; pub fn PdhGetLogFileSize( hLog: PDH_HLOG, llSize: *mut LONGLONG, ) -> PDH_STATUS; pub fn PdhCloseLog( hLog: PDH_HLOG, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhSelectDataSourceW( hWndOwner: HWND, dwFlags: DWORD, szDataSource: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhSelectDataSourceA( hWndOwner: HWND, dwFlags: DWORD, szDataSource: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhIsRealTimeQuery( hQuery: PDH_HQUERY, ) -> PDH_STATUS; pub fn PdhSetQueryTimeRange( hQuery: PDH_HQUERY, pInfo: PPDH_TIME_INFO, ) -> PDH_STATUS; pub fn PdhGetDataSourceTimeRangeW( szDataSource: LPCWSTR, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDataSourceTimeRangeA( szDataSource: LPCSTR, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhCollectQueryDataEx( hQuery: PDH_HQUERY, dwIntervalTime: DWORD, hNewDataEvent: HANDLE, ) -> PDH_STATUS; pub fn PdhFormatFromRawValue( dwCounterType: DWORD, dwFormat: DWORD, pTimeBase: *mut LONGLONG, rawValue1: PPDH_RAW_COUNTER, rawValue2: PPDH_RAW_COUNTER, fmtValue: PPDH_FMT_COUNTERVALUE, ) -> PDH_STATUS; pub fn PdhGetCounterTimeBase( hCounter: PDH_HCOUNTER, pTimeBase: *mut LONGLONG, ) -> PDH_STATUS; pub fn PdhReadRawLogRecord( hLog: PDH_HLOG, ftRecord: FILETIME, pRawLogRecord: PPDH_RAW_LOG_RECORD, pdwBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhSetDefaultRealTimeDataSource( dwDataSourceId: DWORD, ) -> PDH_STATUS; pub fn PdhBindInputDataSourceW( phDataSource: *mut PDH_HLOG, szLogFileNameList: LPCWSTR, ) -> PDH_STATUS; pub fn PdhBindInputDataSourceA( phDataSource: *mut PDH_HLOG, szLogFileNameList: LPCSTR, ) -> PDH_STATUS; pub fn PdhOpenQueryH( hDataSource: PDH_HLOG, dwUserData: DWORD_PTR, phQuery: *mut PDH_HQUERY, ) -> PDH_STATUS; pub fn PdhEnumMachinesHW( hDataSource: PDH_HLOG, mszMachineNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhEnumMachinesHA( hDataSource: PDH_HLOG, mszMachineNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhEnumObjectsHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, mszObjectList: LPWSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS; pub fn PdhEnumObjectsHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, mszObjectList: LPSTR, pcchBufferLength: LPDWORD, dwDetailLevel: DWORD, bRefresh: BOOL, ) -> PDH_STATUS; pub fn PdhEnumObjectItemsHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szObjectName: LPCWSTR, mszCounterList: LPWSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPWSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhEnumObjectItemsHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szObjectName: LPCSTR, mszCounterList: LPSTR, pcchCounterListLength: LPDWORD, mszInstanceList: LPSTR, pcchInstanceListLength: LPDWORD, dwDetailLevel: DWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhExpandWildCardPathHW( hDataSource: PDH_HLOG, szWildCardPath: LPCWSTR, mszExpandedPathList: LPWSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhExpandWildCardPathHA( hDataSource: PDH_HLOG, szWildCardPath: LPCSTR, mszExpandedPathList: LPSTR, pcchPathListLength: LPDWORD, dwFlags: DWORD, ) -> PDH_STATUS; pub fn PdhGetDataSourceTimeRangeH( hDataSource: PDH_HLOG, pdwNumEntries: LPDWORD, pInfo: PPDH_TIME_INFO, pdwBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfObjectHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szDefaultObjectName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfObjectHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szDefaultObjectName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfCounterHW( hDataSource: PDH_HLOG, szMachineName: LPCWSTR, szObjectName: LPCWSTR, szDefaultCounterName: LPWSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhGetDefaultPerfCounterHA( hDataSource: PDH_HLOG, szMachineName: LPCSTR, szObjectName: LPCSTR, szDefaultCounterName: LPSTR, pcchBufferSize: LPDWORD, ) -> PDH_STATUS; pub fn PdhBrowseCountersHW( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HW, ) -> PDH_STATUS; pub fn PdhBrowseCountersHA( pBrowseDlgData: PPDH_BROWSE_DLG_CONFIG_HA, ) -> PDH_STATUS; pub fn PdhEnumLogSetNamesW( szDataSource: LPCWSTR, mszLogSetNameList: LPWSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; pub fn PdhEnumLogSetNamesA( szDataSource: LPCSTR, mszLogSetNameList: LPSTR, pcchBufferLength: LPDWORD, ) -> PDH_STATUS; } // pub fn PdhVerifySQLDBW() -> PDH_STATUS; // pub fn PdhVerifySQLDBA() -> PDH_STATUS; // pub fn PdhCreateSQLTablesW() -> PDH_STATUS; // pub fn PdhCreateSQLTablesA() -> PDH_STATUS; //pub fn PdhGetLogSetGUID() -> PDH_STATUS; // pub fn PdhSetLogSetRunID() -> PDH_STATUS;