📄 pdh.pas
字号:
//
// Logging Functions
//
const
PDH_LOG_READ_ACCESS = DWORD($00010000);
{$EXTERNALSYM PDH_LOG_READ_ACCESS}
PDH_LOG_WRITE_ACCESS = DWORD($00020000);
{$EXTERNALSYM PDH_LOG_WRITE_ACCESS}
PDH_LOG_UPDATE_ACCESS = DWORD($00040000);
{$EXTERNALSYM PDH_LOG_UPDATE_ACCESS}
PDH_LOG_ACCESS_MASK = DWORD($000F0000);
{$EXTERNALSYM PDH_LOG_ACCESS_MASK}
PDH_LOG_CREATE_NEW = DWORD($00000001);
{$EXTERNALSYM PDH_LOG_CREATE_NEW}
PDH_LOG_CREATE_ALWAYS = DWORD($00000002);
{$EXTERNALSYM PDH_LOG_CREATE_ALWAYS}
PDH_LOG_OPEN_ALWAYS = DWORD($00000003);
{$EXTERNALSYM PDH_LOG_OPEN_ALWAYS}
PDH_LOG_OPEN_EXISTING = DWORD($00000004);
{$EXTERNALSYM PDH_LOG_OPEN_EXISTING}
PDH_LOG_CREATE_MASK = DWORD($0000000F);
{$EXTERNALSYM PDH_LOG_CREATE_MASK}
PDH_LOG_OPT_USER_STRING = DWORD($01000000);
{$EXTERNALSYM PDH_LOG_OPT_USER_STRING}
PDH_LOG_OPT_CIRCULAR = DWORD($02000000);
{$EXTERNALSYM PDH_LOG_OPT_CIRCULAR}
PDH_LOG_OPT_MAX_IS_BYTES = DWORD($04000000);
{$EXTERNALSYM PDH_LOG_OPT_MAX_IS_BYTES}
PDH_LOG_OPT_MASK = DWORD($0F000000);
{$EXTERNALSYM PDH_LOG_OPT_MASK}
PDH_LOG_TYPE_UNDEFINED = 0;
{$EXTERNALSYM PDH_LOG_TYPE_UNDEFINED}
PDH_LOG_TYPE_CSV = 1;
{$EXTERNALSYM PDH_LOG_TYPE_CSV}
PDH_LOG_TYPE_TSV = 2;
{$EXTERNALSYM PDH_LOG_TYPE_TSV}
PDH_LOG_TYPE_BINARY = 3;
{$EXTERNALSYM PDH_LOG_TYPE_BINARY}
PDH_LOG_TYPE_TRACE_KERNEL = 4;
{$EXTERNALSYM PDH_LOG_TYPE_TRACE_KERNEL}
PDH_LOG_TYPE_TRACE_GENERIC = 5;
{$EXTERNALSYM PDH_LOG_TYPE_TRACE_GENERIC}
PDH_LOG_TYPE_PERFMON = 6;
{$EXTERNALSYM PDH_LOG_TYPE_PERFMON}
function PdhOpenLogA(szLogFileName: PAnsiChar; dwAccessFlags: DWORD;
lpdwLogType: LPDWORD; hQuery: HQUERY; dwMaxRecords: DWORD;
szUserCaption: PAnsiChar; var phLog: HLOG): Longint; stdcall;
{$EXTERNALSYM PdhOpenLogA}
function PdhOpenLogW(szLogFileName: PWideChar; dwAccessFlags: DWORD;
lpdwLogType: LPDWORD; hQuery: HQUERY; dwMaxRecords: DWORD;
szUserCaption: PWideChar; var phLog: HLOG): Longint; stdcall;
{$EXTERNALSYM PdhOpenLogW}
function PdhOpenLog(szLogFileName: PChar; dwAccessFlags: DWORD;
lpdwLogType: LPDWORD; hQuery: HQUERY; dwMaxRecords: DWORD;
szUserCaption: PChar; var phLog: HLOG): Longint; stdcall;
{$EXTERNALSYM PdhOpenLog}
function PdhUpdateLogA(hLog: HLOG; szUserString: PAnsiChar): Longint; stdcall;
{$EXTERNALSYM PdhUpdateLogA}
function PdhUpdateLogW(hLog: HLOG; szUserString: PWideChar): Longint; stdcall;
{$EXTERNALSYM PdhUpdateLogW}
function PdhUpdateLog(hLog: HLOG; szUserString: PChar): Longint; stdcall;
{$EXTERNALSYM PdhUpdateLog}
function PdhUpdateLogFileCatalog(hLog: HLOG): Longint; stdcall;
{$EXTERNALSYM PdhUpdateLogFileCatalog}
function PdhGetLogFileSize(hLog: HLOG; var llSize: LONGLONG): Longint; stdcall;
{$EXTERNALSYM PdhGetLogFileSize}
function PdhCloseLog(hLog: HLOG; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhCloseLog}
const
PDH_FLAGS_CLOSE_QUERY = DWORD($00000001);
{$EXTERNALSYM PDH_FLAGS_CLOSE_QUERY}
//
// Data source selection dialog
//
PDH_FLAGS_FILE_BROWSER_ONLY = DWORD($00000001);
{$EXTERNALSYM PDH_FLAGS_FILE_BROWSER_ONLY}
function PdhSelectDataSourceA(hWndOwner: HWND; dwFlags: DWORD;
szDataSource: PAnsiChar; var pcchBufferLength: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhSelectDataSourceA}
function PdhSelectDataSourceW(hWndOwner: HWND; dwFlags: DWORD;
szDataSource: PWideChar; var pcchBufferLength: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhSelectDataSourceW}
function PdhSelectDataSource(hWndOwner: HWND; dwFlags: DWORD;
szDataSource: PChar; var pcchBufferLength: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhSelectDataSource}
function PdhIsRealTimeQuery(hQuery: HQUERY): BOOL; stdcall;
{$EXTERNALSYM PdhIsRealTimeQuery}
function PdhSetQueryTimeRange(hQuery: HQUERY; pInfo: PPdhTimeInfo): Longint; stdcall;
{$EXTERNALSYM PdhSetQueryTimeRange}
function PdhGetDataSourceTimeRangeA(szDataSource: PAnsiChar; pdwNumEntries: LPDWORD;
pInfo: PPdhTimeInfo; pdwBufferSize: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDataSourceTimeRangeA}
function PdhGetDataSourceTimeRangeW(szDataSource: PWideChar; pdwNumEntries: LPDWORD;
pInfo: PPdhTimeInfo; pdwBufferSize: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDataSourceTimeRangeW}
function PdhGetDataSourceTimeRange(szDataSource: PChar; pdwNumEntries: LPDWORD;
pInfo: PPdhTimeInfo; pdwBufferSize: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDataSourceTimeRange}
function PdhCollectQueryDataEx(hQuery: HQUERY; dwIntervalTime: DWORD;
hNewDataEvent: THandle): Longint; stdcall;
{$EXTERNALSYM PdhCollectQueryDataEx}
function PdhFormatFromRawValue(dwCounterType, dwFormat: DWORD;
var pTimeBase: LONGLONG; pRawValue1, pRawValue2: PPdhRawCounter;
pFmtValue: PPdhFmtCounterValue): Longint; stdcall;
{$EXTERNALSYM PdhFormatFromRawValue}
function PdhGetCounterTimeBase(hCounter: HCOUNTER; var pTimeBase: LONGLONG): Longint; stdcall;
{$EXTERNALSYM PdhGetCounterTimeBase}
function PdhReadRawLogRecord(hLog: HLOG; ftRecord: TFileTime;
pRawLogRecord: PPdhRawLogRecord; pdwBufferLength: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhReadRawLogRecord}
const
DATA_SOURCE_REGISTRY = DWORD($00000001);
{$EXTERNALSYM DATA_SOURCE_REGISTRY}
DATA_SOURCE_LOGFILE = DWORD($00000002);
{$EXTERNALSYM DATA_SOURCE_LOGFILE}
DATA_SOURCE_WBEM = DWORD($00000004);
{$EXTERNALSYM DATA_SOURCE_WBEM}
function PdhSetDefaultRealTimeDataSource(dwDataSourceId: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhSetDefaultRealTimeDataSource}
// flags for the log service api's
const
PDH_LOGSVC_NO_WAIT = DWORD($80000000);
{$EXTERNALSYM PDH_LOGSVC_NO_WAIT}
PDH_LOGSVC_ALL_QUERIES = DWORD($00000001);
{$EXTERNALSYM PDH_LOGSVC_ALL_QUERIES}
PDH_LOGSVC_TRACE_LOG = DWORD($00000002);
{$EXTERNALSYM PDH_LOGSVC_TRACE_LOG}
PDH_LOGSVC_CMD_START = DWORD($00000010);
{$EXTERNALSYM PDH_LOGSVC_CMD_START}
PDH_LOGSVC_CMD_STOP = DWORD($00000020);
{$EXTERNALSYM PDH_LOGSVC_CMD_STOP}
PDH_LOGSVC_CTRL_ADD = DWORD($00000100);
{$EXTERNALSYM PDH_LOGSVC_CTRL_ADD}
PDH_LOGSVC_CTRL_REMOVE = DWORD($00000200);
{$EXTERNALSYM PDH_LOGSVC_CTRL_REMOVE}
PDH_LOGSVC_CTRL_INFO = DWORD($00000400);
{$EXTERNALSYM PDH_LOGSVC_CTRL_INFO}
PDH_LOGSVC_STATUS_RUNNING = DWORD($00001000);
{$EXTERNALSYM PDH_LOGSVC_STATUS_RUNNING}
PDH_LOGSVC_STATUS_STOPPED = DWORD($00002000);
{$EXTERNALSYM PDH_LOGSVC_STATUS_STOPPED}
PDH_LOGSVC_STATUS_PAUSED = DWORD($00004000);
{$EXTERNALSYM PDH_LOGSVC_STATUS_PAUSED}
PDH_LOGSVC_STATUS_ERROR = DWORD($00008000);
{$EXTERNALSYM PDH_LOGSVC_STATUS_ERROR}
PDH_LOGSVC_STATUS_PENDING = DWORD($00010000);
{$EXTERNALSYM PDH_LOGSVC_STATUS_PENDING}
PDH_LOGSVC_NAME_UNDEFINED = DWORD(-1);
{$EXTERNALSYM PDH_LOGSVC_NAME_UNDEFINED}
PDH_LOGSVC_NAME_MMDDHH = DWORD(0);
{$EXTERNALSYM PDH_LOGSVC_NAME_MMDDHH}
PDH_LOGSVC_NAME_NNNNNN = DWORD(1);
{$EXTERNALSYM PDH_LOGSVC_NAME_NNNNNN}
PDH_LOGSVC_NAME_YYDDD = DWORD(2);
{$EXTERNALSYM PDH_LOGSVC_NAME_YYDDD}
PDH_LOGSVC_NAME_YYMM = DWORD(3);
{$EXTERNALSYM PDH_LOGSVC_NAME_YYMM}
PDH_LOGSVC_NAME_YYMMDD = DWORD(4);
{$EXTERNALSYM PDH_LOGSVC_NAME_YYMMDD}
PDH_LOGSVC_NAME_YYMMDDHH = DWORD(5);
{$EXTERNALSYM PDH_LOGSVC_NAME_YYMMDDHH}
PDH_LOGSVC_RENAME_UNDEFINED = DWORD(-1);
{$EXTERNALSYM PDH_LOGSVC_RENAME_UNDEFINED}
PDH_LOGSVC_RENAME_HOURS = DWORD(0);
{$EXTERNALSYM PDH_LOGSVC_RENAME_HOURS}
PDH_LOGSVC_RENAME_DAYS = DWORD(1);
{$EXTERNALSYM PDH_LOGSVC_RENAME_DAYS}
PDH_LOGSVC_RENAME_MONTHS = DWORD(2);
{$EXTERNALSYM PDH_LOGSVC_RENAME_MONTHS}
PDH_LOGSVC_RENAME_KBYTES = DWORD(3);
{$EXTERNALSYM PDH_LOGSVC_RENAME_KBYTES}
PDH_LOGSVC_RENAME_MBYTES = DWORD(4);
{$EXTERNALSYM PDH_LOGSVC_RENAME_MBYTES}
function PdhLogServiceCommandA(szMachineName, szQueryName: PAnsiChar;
dwFlags: DWORD; pdwStatus: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhLogServiceCommandA}
function PdhLogServiceCommandW(szMachineName, szQueryName: PWideChar;
dwFlags: DWORD; pdwStatus: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhLogServiceCommandW}
function PdhLogServiceCommand(szMachineName, szQueryName: PChar;
dwFlags: DWORD; pdwStatus: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhLogServiceCommand}
function PdhLogServiceControlA(szMachineName, szQueryName: PAnsiChar; dwFlags: DWORD;
pInfoBuffer: PPdhLogServiceQueryInfoA; pdwBufferSize: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhLogServiceControlA}
function PdhLogServiceControlW(szMachineName, szQueryName: PWideChar; dwFlags: DWORD;
pInfoBuffer: PPdhLogServiceQueryInfoW; pdwBufferSize: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhLogServiceControlW}
function PdhLogServiceControl(szMachineName, szQueryName: PChar; dwFlags: DWORD;
pInfoBuffer: PPdhLogServiceQueryInfo; pdwBufferSize: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhLogServiceControl}
implementation
const
PdhLib = 'pdh.dll';
function IsSuccessSeverity(ErrorCode: Longint): Boolean;
begin
Result := (ErrorCode and $C0000000) = $00000000;
end;
function IsInformationalSeverity(ErrorCode: Longint): Boolean;
begin
Result := (ErrorCode and $C0000000) = $40000000;
end;
function IsWarningSeverity(ErrorCode: Longint): Boolean;
begin
Result := (ErrorCode and $C0000000) = $80000000;
end;
function IsErrorSeverity(ErrorCode: Longint): Boolean;
begin
Result := (ErrorCode and $C0000000) = $C0000000;
end;
function PdhGetDllVersion; external PdhLib name 'PdhGetDllVersion';
function PdhOpenQueryA; external PdhLib name 'PdhOpenQuery';
function PdhOpenQueryW; external PdhLib name 'PdhOpenQuery';
function PdhOpenQuery; external PdhLib name 'PdhOpenQuery';
function PdhAddCounterA; external PdhLib name 'PdhAddCounterA';
function PdhAddCounterW; external PdhLib name 'PdhAddCounterW';
function PdhAddCounter; external PdhLib name 'PdhAddCounterA';
function PdhRemoveCounter; external PdhLib name 'PdhRemoveCounter';
function PdhCollectQueryData; external PdhLib name 'PdhCollectQueryData';
function PdhCloseQuery; external PdhLib name 'PdhCloseQuery';
function PdhGetFormattedCounterValue; external PdhLib name 'PdhGetFormattedCounterValue';
function PdhGetFormattedCounterArrayA; external PdhLib name 'PdhGetFormattedCounterArrayA';
function PdhGetFormattedCounterArrayW; external PdhLib name 'PdhGetFormattedCounterArrayW';
function PdhGetFormattedCounterArray; external PdhLib name 'PdhGetFormattedCounterArrayA';
function PdhGetRawCounterValue; external PdhLib name 'PdhGetRawCounterValue';
function PdhGetRawCounterArrayA; external PdhLib name 'PdhGetRawCounterArrayA';
function PdhGetRawCounterArrayW; external PdhLib name 'PdhGetRawCounterArrayW';
function PdhGetRawCounterArray; external PdhLib name 'PdhGetRawCounterArrayA';
function PdhCalculateCounterFromRawValue; external PdhLib name 'PdhCalculateCounterFromRawValue';
function PdhComputeCounterStatistics; external PdhLib name 'PdhComputeCounterStatistics';
function PdhGetCounterInfoA; external PdhLib name 'PdhGetCounterInfoA';
function PdhGetCounterInfoW; external PdhLib name 'PdhGetCounterInfoW';
function PdhGetCounterInfo; external PdhLib name 'PdhGetCounterInfoA';
function PdhSetCounterScaleFactor; external PdhLib name 'PdhSetCounterScaleFactor';
function PdhConnectMachineA; external PdhLib name 'PdhConnectMachineA';
function PdhConnectMachineW; external PdhLib name 'PdhConnectMachineW';
function PdhConnectMachine; external PdhLib name 'PdhConnectMachineA';
function PdhEnumMachinesA; external PdhLib name 'PdhEnumMachinesA';
function PdhEnumMachinesW; external PdhLib name 'PdhEnumMachinesW';
function PdhEnumMachines; external PdhLib name 'PdhEnumMachinesA';
function PdhEnumObjectsA; external PdhLib name 'PdhEnumObjectsA';
function PdhEnumObjectsW; external PdhLib name 'PdhEnumObjectsW';
function PdhEnumObjects; external PdhLib name 'PdhEnumObjectsA';
function PdhEnumObjectItemsA; external PdhLib name 'PdhEnumObjectItemsA';
function PdhEnumObjectItemsW; external PdhLib name 'PdhEnumObjectItemsW';
function PdhEnumObjectItems; external PdhLib name 'PdhEnumObjectItemsA';
function PdhMakeCounterPathA; external PdhLib name 'PdhMakeCounterPathA';
function PdhMakeCounterPathW; external PdhLib name 'PdhMakeCounterPathW';
function PdhMakeCounterPath; external PdhLib name 'PdhMakeCounterPathA';
function PdhParseCounterPathA; external PdhLib name 'PdhParseCounterPathA';
function PdhParseCounterPathW; external PdhLib name 'PdhParseCounterPathW';
function PdhParseCounterPath; external PdhLib name 'PdhParseCounterPathA';
function PDH_PATH_LANG_FLAGS(LangId, Flags: DWORD): DWORD;
begin
Result := DWORD(((LangId and $0000FFFF) shl 16) or (Flags and $0000FFFF));
end;
function PdhParseInstanceNameA; external PdhLib name 'PdhParseInstanceNameA';
function PdhParseInstanceNameW; external PdhLib name 'PdhParseInstanceNameW';
function PdhParseInstanceName; external PdhLib name 'PdhParseInstanceNameA';
function PdhValidatePathA; external PdhLib name 'PdhValidatePathA';
function PdhValidatePathW; external PdhLib name 'PdhValidatePathW';
function PdhValidatePath; external PdhLib name 'PdhValidatePathA';
function PdhGetDefaultPerfObjectA; external PdhLib name 'PdhGetDefaultPerfObjectA';
function PdhGetDefaultPerfObjectW; external PdhLib name 'PdhGetDefaultPerfObjectW';
function PdhGetDefaultPerfObject; external PdhLib name 'PdhGetDefaultPerfObjectA';
function PdhGetDefaultPerfCounterA; external PdhLib name 'PdhGetDefaultPerfCounterA';
function PdhGetDefaultPerfCounterW; external PdhLib name 'PdhGetDefaultPerfCounterW';
function PdhGetDefaultPerfCounter; external PdhLib name 'PdhGetDefaultPerfCounterA';
function PdhBrowseCountersA; external PdhLib name 'PdhBrowseCountersA';
function PdhBrowseCountersW; external PdhLib name 'PdhBrowseCountersW';
function PdhBrowseCounters; external PdhLib name 'PdhBrowseCountersA';
function PdhExpandCounterPathA; external PdhLib name 'PdhExpandCounterPathA';
function PdhExpandCounterPathW; external PdhLib name 'PdhExpandCounterPathW';
function PdhExpandCounterPath; external PdhLib name 'PdhExpandCounterPathA';
function PdhLookupPerfNameByIndexA; external PdhLib name 'PdhLookupPerfNameByIndexA';
function PdhLookupPerfNameByIndexW; external PdhLib name 'PdhLookupPerfNameByIndexW';
function PdhLookupPerfNameByIndex; external PdhLib name 'PdhLookupPerfNameByIndexA';
function PdhLookupPerfIndexByNameA; external PdhLib name 'PdhLookupPerfIndexByNameA';
function PdhLookupPerfIndexByNameW; external PdhLib name 'PdhLookupPerfIndexByNameW';
function PdhLookupPerfIndexByName; external PdhLib name 'PdhLookupPerfIndexByNameA';
function PdhOpenLogA; external PdhLib name 'PdhOpenLogA';
function PdhOpenLogW; external PdhLib name 'PdhOpenLogW';
function PdhOpenLog; external PdhLib name 'PdhOpenLogA';
function PdhUpdateLogA; external PdhLib name 'PdhUpdateLogA';
function PdhUpdateLogW; external PdhLib name 'PdhUpdateLogW';
function PdhUpdateLog; external PdhLib name 'PdhUpdateLogA';
function PdhUpdateLogFileCatalog; external PdhLib name 'PdhUpdateLogFileCatalog';
function PdhGetLogFileSize; external PdhLib name 'PdhGetLogFileSize';
function PdhCloseLog; external PdhLib name 'PdhCloseLog';
function PdhSelectDataSourceA; external PdhLib name 'PdhSelectDataSourceA';
function PdhSelectDataSourceW; external PdhLib name 'PdhSelectDataSourceW';
function PdhSelectDataSource; external PdhLib name 'PdhSelectDataSourceA';
function PdhIsRealTimeQuery; external PdhLib name 'PdhIsRealTimeQuery';
function PdhSetQueryTimeRange; external PdhLib name 'PdhSetQueryTimeRange';
function PdhGetDataSourceTimeRangeA; external PdhLib name 'PdhGetDataSourceTimeRangeA';
function PdhGetDataSourceTimeRangeW; external PdhLib name 'PdhGetDataSourceTimeRangeW';
function PdhGetDataSourceTimeRange; external PdhLib name 'PdhGetDataSourceTimeRangeA';
function PdhCollectQueryDataEx; external PdhLib name 'PdhCollectQueryDataEx';
function PdhFormatFromRawValue; external PdhLib name 'PdhFormatFromRawValue';
function PdhGetCounterTimeBase; external PdhLib name 'PdhGetCounterTimeBase';
function PdhReadRawLogRecord; external PdhLib name 'PdhReadRawLogRecord';
function PdhSetDefaultRealTimeDataSource; external PdhLib name 'PdhSetDefaultRealTimeDataSource';
function PdhLogServiceCommandA; external PdhLib name 'PdhLogServiceCommandA';
function PdhLogServiceCommandW; external PdhLib name 'PdhLogServiceCommandW';
function PdhLogServiceCommand; external PdhLib name 'PdhLogServiceCommandA';
function PdhLogServiceControlA; external PdhLib name 'PdhLogServiceControlA';
function PdhLogServiceControlW; external PdhLib name 'PdhLogServiceControlW';
function PdhLogServiceControl; external PdhLib name 'PdhLogServiceControlA';
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -