📄 pdh.pas
字号:
{$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS}
TPdhDataItemPathElements = _PDH_DATA_ITEM_PATH_ELEMENTS_A;
{$ENDIF}
PPDH_COUNTER_INFO_A = ^PDH_COUNTER_INFO_A;
{$EXTERNALSYM PPDH_COUNTER_INFO_A}
_PDH_COUNTER_INFO_A = record
dwLength: DWORD;
dwType: DWORD;
CVersion: DWORD;
CStatus: DWORD;
lScale: LONG;
lDefaultScale: LONG;
dwUserData: DWORD_PTR;
dwQueryUserData: DWORD_PTR;
szFullPath: LPSTR;
Union: record
case Longint of
1: (DataItemPath: PDH_DATA_ITEM_PATH_ELEMENTS_A);
2: (CounterPath: PDH_COUNTER_PATH_ELEMENTS_A);
3: (szMachineName: LPSTR;
szObjectName: LPSTR;
szInstanceName: LPSTR;
szParentInstance: LPSTR;
dwInstanceIndex: DWORD;
szCounterName: LPSTR);
end;
szExplainText: LPSTR;
DataBuffer: array [0..0] of DWORD;
end;
{$EXTERNALSYM _PDH_COUNTER_INFO_A}
PDH_COUNTER_INFO_A = _PDH_COUNTER_INFO_A;
{$EXTERNALSYM PDH_COUNTER_INFO_A}
TPdhCounterInfoA = PDH_COUNTER_INFO_A;
PPdhCounterInfoA = PPDH_COUNTER_INFO_A;
PPDH_COUNTER_INFO_W = ^PDH_COUNTER_INFO_W;
{$EXTERNALSYM PPDH_COUNTER_INFO_W}
_PDH_COUNTER_INFO_W = record
dwLength: DWORD;
dwType: DWORD;
CVersion: DWORD;
CStatus: DWORD;
lScale: LONG;
lDefaultScale: LONG;
dwUserData: DWORD_PTR;
dwQueryUserData: DWORD_PTR;
szFullPath: LPWSTR;
Union: record
case Longint of
1: (DataItemPath: PDH_DATA_ITEM_PATH_ELEMENTS_W);
2: (CounterPath: PDH_COUNTER_PATH_ELEMENTS_W);
3: (szMachineName: LPWSTR;
szObjectName: LPWSTR;
szInstanceName: LPWSTR;
szParentInstance: LPWSTR;
dwInstanceIndex: DWORD;
szCounterName: LPWSTR);
end;
szExplainText: LPWSTR;
DataBuffer: array [0..0] of DWORD;
end;
{$EXTERNALSYM _PDH_COUNTER_INFO_W}
PDH_COUNTER_INFO_W = _PDH_COUNTER_INFO_W;
{$EXTERNALSYM PDH_COUNTER_INFO_W}
TPdhCounterInfoW = PDH_COUNTER_INFO_W;
PPdhCounterInfoW = PPDH_COUNTER_INFO_W;
{$IFDEF UNICODE}
PPdhCounterInfo = PPdhCounterInfoW;
PDH_COUNTER_INFO = _PDH_COUNTER_INFO_W;
{$EXTERNALSYM PDH_COUNTER_INFO}
PPDH_COUNTER_INFO = PPDH_COUNTER_INFO_W;
{$EXTERNALSYM PPDH_COUNTER_INFO}
TPdhCounterInfo = _PDH_COUNTER_INFO_W;
{$ELSE}
PPdhCounterInfo = PPdhCounterInfoA;
PDH_COUNTER_INFO = _PDH_COUNTER_INFO_A;
{$EXTERNALSYM PDH_COUNTER_INFO}
PPDH_COUNTER_INFO = PPDH_COUNTER_INFO_A;
{$EXTERNALSYM PPDH_COUNTER_INFO}
TPdhCounterInfo = _PDH_COUNTER_INFO_A;
{$ENDIF}
PPDH_TIME_INFO = ^PDH_TIME_INFO;
{$EXTERNALSYM PPDH_TIME_INFO}
_PDH_TIME_INFO = record
StartTime: LONGLONG;
EndTime: LONGLONG;
SampleCount: DWORD;
end;
{$EXTERNALSYM _PDH_TIME_INFO}
PDH_TIME_INFO = _PDH_TIME_INFO;
{$EXTERNALSYM PDH_TIME_INFO}
TPdhTimeInfo = PDH_TIME_INFO;
PPdhTimeInfo = PPDH_TIME_INFO;
PPDH_RAW_LOG_RECORD = ^PDH_RAW_LOG_RECORD;
{$EXTERNALSYM PPDH_RAW_LOG_RECORD}
_PDH_RAW_LOG_RECORD = record
dwStructureSize: DWORD;
dwRecordType: DWORD;
dwItems: DWORD;
RawBytes: array [0..0] of UCHAR;
end;
{$EXTERNALSYM _PDH_RAW_LOG_RECORD}
PDH_RAW_LOG_RECORD = _PDH_RAW_LOG_RECORD;
{$EXTERNALSYM PDH_RAW_LOG_RECORD}
TPdhRawLogRecord = PDH_RAW_LOG_RECORD;
PPdhRawLogRecord = PPDH_RAW_LOG_RECORD;
PPDH_LOG_SERVICE_QUERY_INFO_A = ^PDH_LOG_SERVICE_QUERY_INFO_A;
{$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO_A}
_PDH_LOG_SERVICE_QUERY_INFO_A = record
dwSize: DWORD;
dwFlags: DWORD;
dwLogQuota: DWORD;
szLogFileCaption: LPSTR;
szDefaultDir: LPSTR;
szBaseFileName: LPSTR;
dwFileType: DWORD;
dwReserved: DWORD;
Union: record
case Longint of
1: (PdlAutoNameInterval: DWORD;
PdlAutoNameUnits: DWORD;
PdlCommandFilename: LPSTR;
PdlCounterList: LPSTR;
PdlAutoNameFormat: DWORD;
PdlSampleInterval: DWORD;
PdlLogStartTime: FILETIME;
PdlLogEndTime: FILETIME);
2: (TlNumberOfBuffers: DWORD;
TlMinimumBuffers: DWORD;
TlMaximumBuffers: DWORD;
TlFreeBuffers: DWORD;
TlBufferSize: DWORD;
TlEventsLost: DWORD;
TlLoggerThreadId: DWORD;
TlBuffersWritten: DWORD;
TlLogHandle: DWORD;
TlLogFileName: LPSTR);
end;
end;
{$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_A}
PDH_LOG_SERVICE_QUERY_INFO_A = _PDH_LOG_SERVICE_QUERY_INFO_A;
{$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_A}
TPdhLogServiceQueryInfoA = PDH_LOG_SERVICE_QUERY_INFO_A;
PPdhLogServiceQueryInfoA = PPDH_LOG_SERVICE_QUERY_INFO_A;
PPDH_LOG_SERVICE_QUERY_INFO_W = ^PDH_LOG_SERVICE_QUERY_INFO_W;
{$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO_W}
_PDH_LOG_SERVICE_QUERY_INFO_W = record
dwSize: DWORD;
dwFlags: DWORD;
dwLogQuota: DWORD;
szLogFileCaption: LPWSTR;
szDefaultDir: LPWSTR;
szBaseFileName: LPWSTR;
dwFileType: DWORD;
dwReserved: DWORD;
Union: record
case Longint of
1: (PdlAutoNameInterval: DWORD;
PdlAutoNameUnits: DWORD;
PdlCommandFilename: LPWSTR;
PdlCounterList: LPWSTR;
PdlAutoNameFormat: DWORD;
PdlSampleInterval: DWORD;
PdlLogStartTime: FILETIME;
PdlLogEndTime: FILETIME);
2: (TlNumberOfBuffers: DWORD;
TlMinimumBuffers: DWORD;
TlMaximumBuffers: DWORD;
TlFreeBuffers: DWORD;
TlBufferSize: DWORD;
TlEventsLost: DWORD;
TlLoggerThreadId: DWORD;
TlBuffersWritten: DWORD;
TlLogHandle: DWORD;
TlLogFileName: LPWSTR);
end;
end;
{$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_W}
PDH_LOG_SERVICE_QUERY_INFO_W = _PDH_LOG_SERVICE_QUERY_INFO_W;
{$EXTERNALSYM PDH_LOG_SERVICE_QUERY_INFO_W}
TPdhLogServiceQueryInfoW = PDH_LOG_SERVICE_QUERY_INFO_W;
PPdhLogServiceQueryInfoW = PPDH_LOG_SERVICE_QUERY_INFO_W;
{$IFDEF UNICODE}
PPdhLogServiceQueryInfo = PPdhLogServiceQueryInfoW;
PDH_LOG_SERVICE_QUERY_INFO = _PDH_LOG_SERVICE_QUERY_INFO_W;
{$EXTERNALSYM PDH_LOG_SERVICE_QUERY_INFO}
PPDH_LOG_SERVICE_QUERY_INFO = PPDH_LOG_SERVICE_QUERY_INFO_W;
{$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO}
TPdhLogServiceQueryInfo = _PDH_LOG_SERVICE_QUERY_INFO_W;
{$ELSE}
PPdhLogServiceQueryInfo = PPdhLogServiceQueryInfoA;
PDH_LOG_SERVICE_QUERY_INFO = _PDH_LOG_SERVICE_QUERY_INFO_A;
{$EXTERNALSYM PDH_LOG_SERVICE_QUERY_INFO}
PPDH_LOG_SERVICE_QUERY_INFO = PPDH_LOG_SERVICE_QUERY_INFO_A;
{$EXTERNALSYM PPDH_LOG_SERVICE_QUERY_INFO}
TPdhLogServiceQueryInfo = _PDH_LOG_SERVICE_QUERY_INFO_A;
{$ENDIF}
//
// Time value constants
//
const
MAX_TIME_VALUE = LONGLONG($7FFFFFFFFFFFFFFF);
{$EXTERNALSYM MAX_TIME_VALUE}
MIN_TIME_VALUE = LONGLONG(0);
{$EXTERNALSYM MIN_TIME_VALUE}
// function definitions
function PdhGetDllVersion(var lpdwVersion: DWORD): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhGetDllVersion}
//
// Query Functions
//
function PdhOpenQueryA(szDataSource: LPCSTR; dwUserData: DWORD_PTR;
var phQuery: HQUERY): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhOpenQueryA}
function PdhOpenQueryW(szDataSource: LPCWSTR; dwUserData: DWORD_PTR;
var phQuery: HQUERY): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhOpenQueryW}
{$IFDEF UNICODE}
function PdhOpenQuery(szDataSource: LPCWSTR; dwUserData: DWORD_PTR;
var phQuery: HQUERY): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhOpenQuery}
{$ELSE}
function PdhOpenQuery(szDataSource: LPCSTR; dwUserData: DWORD_PTR;
var phQuery: HQUERY): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhOpenQuery}
{$ENDIF}
function PdhAddCounterA(hQuery: HQUERY; szFullCounterPath: LPCSTR;
dwUserData: DWORD_PTR; var phCounter: HCOUNTER): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhAddCounterA}
function PdhAddCounterW(hQuery: HQUERY; szFullCounterPath: LPCWSTR;
dwUserData: DWORD_PTR; var phCounter: HCOUNTER): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhAddCounterW}
{$IFDEF UNICODE}
function PdhAddCounter(hQuery: HQUERY; szFullCounterPath: LPCWSTR;
dwUserData: DWORD_PTR; var phCounter: HCOUNTER): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhAddCounter}
{$ELSE}
function PdhAddCounter(hQuery: HQUERY; szFullCounterPath: LPCSTR;
dwUserData: DWORD_PTR; var phCounter: HCOUNTER): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhAddCounter}
{$ENDIF}
function PdhRemoveCounter(hCounter: HCOUNTER): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhRemoveCounter}
function PdhCollectQueryData(hQuery: HQUERY): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhCollectQueryData}
function PdhCloseQuery(hQuery: HQUERY): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhCloseQuery}
//
// Counter Functions
//
function PdhGetFormattedCounterValue(hCounter: HCOUNTER; dwFormat: DWORD;
lpdwType: LPDWORD; var pValue: PDH_FMT_COUNTERVALUE): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterValue}
function PdhGetFormattedCounterArrayA(hCounter: HCOUNTER; dwFormat: DWORD;
var lpdwBufferSize, lpdwItemCount: DWORD;
var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM_A): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArrayA}
function PdhGetFormattedCounterArrayW(hCounter: HCOUNTER; dwFormat: DWORD;
var lpdwBufferSize, lpdwItemCount: DWORD;
var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM_W): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArrayW}
{$IFDEF UNICODE}
function PdhGetFormattedCounterArray(hCounter: HCOUNTER; dwFormat: DWORD;
var lpdwBufferSize, lpdwItemCount: DWORD;
var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM_W): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArray}
{$ELSE}
function PdhGetFormattedCounterArray(hCounter: HCOUNTER; dwFormat: DWORD;
var lpdwBufferSize, lpdwItemCount: DWORD;
var ItemBuffer: PDH_FMT_COUNTERVALUE_ITEM_A): PDH_STATUS; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArray}
{$ENDIF}
// dwFormat flag values
const
PDH_FMT_RAW = DWORD($00000010);
{$EXTERNALSYM PDH_FMT_RAW}
PDH_FMT_ANSI = DWORD($00000020);
{$EXTERNALSYM PDH_FMT_ANSI}
PDH_FMT_UNICODE = DWORD($00000040);
{$EXTERNALSYM PDH_FMT_UNICODE}
PDH_FMT_LONG = DWORD($00000100);
{$EXTERNALSYM PDH_FMT_LONG}
PDH_FMT_DOUBLE = DWORD($00000200);
{$EXTERNALSYM PDH_FMT_DOUBLE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -