📄 jwapdh.pas
字号:
{******************************************************************************}
{ }
{ Performance Data Helper API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
{ Corporation. All Rights Reserved. }
{ }
{ The original file is: pdh.h, released June 2000. The original Pascal }
{ code is: Pdh.pas, released December 2000. The initial developer of the }
{ Pascal code is Marcel van Brakel (brakelm@chello.nl). }
{ }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
{ Marcel van Brakel. All Rights Reserved. }
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project JEDI home }
{ page, located at http://delphi-jedi.org or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
unit JwaPdh;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "pdh.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinBase, JwaWinType, JwaWinPerf;
type
PDH_STATUS = DWORD;
{$EXTERNALSYM PDH_STATUS}
const
// version info
PDH_CVERSION_WIN40 = DWORD($0400);
{$EXTERNALSYM PDH_CVERSION_WIN40}
PDH_CVERSION_WIN50 = DWORD($0500);
{$EXTERNALSYM PDH_CVERSION_WIN50}
// v1.1 revision of PDH -- basic log functions
// v1.2 of the PDH -- adds variable instance counters
// v1.3 of the PDH -- adds log service control & stubs for NT5/PDH v2 fn's
// v2.0 of the PDH -- is the NT v 5.0 B2 version
PDH_VERSION = DWORD((PDH_CVERSION_WIN50) + $0003);
{$EXTERNALSYM PDH_VERSION}
// define severity masks
function IsSuccessSeverity(ErrorCode: Longint): Boolean;
{$EXTERNALSYM IsSuccessSeverity}
function IsInformationalSeverity(ErrorCode: Longint): Boolean;
{$EXTERNALSYM IsInformationalSeverity}
function IsWarningSeverity(ErrorCode: Longint): Boolean;
{$EXTERNALSYM IsWarningSeverity}
function IsErrorSeverity(ErrorCode: Longint): Boolean;
{$EXTERNALSYM IsErrorSeverity}
const
MAX_COUNTER_PATH = 256; // Maximum counter path length
{$EXTERNALSYM MAX_COUNTER_PATH}
PDH_MAX_COUNTER_NAME = 1024; // Maximum counter name length.
{$EXTERNALSYM PDH_MAX_COUNTER_NAME}
PDH_MAX_INSTANCE_NAME = 1024; // Maximum counter instance name length.
{$EXTERNALSYM PDH_MAX_INSTANCE_NAME}
PDH_MAX_COUNTER_PATH = 2048; // Maximum full counter path length.
{$EXTERNALSYM PDH_MAX_COUNTER_PATH}
PDH_MAX_DATASOURCE_PATH = 1024; // MAximum full counter log name length.
{$EXTERNALSYM PDH_MAX_DATASOURCE_PATH}
// data type definitions
type
PDH_HCOUNTER = HANDLE;
{$EXTERNALSYM PDH_HCOUNTER}
PDH_HQUERY = HANDLE;
{$EXTERNALSYM PDH_HQUERY}
PDH_HLOG = HANDLE;
{$EXTERNALSYM PDH_HLOG}
HCOUNTER = PDH_HCOUNTER;
{$EXTERNALSYM HCOUNTER}
HQUERY = PDH_HQUERY;
{$EXTERNALSYM HQUERY}
HLOG = PDH_HLOG;
{$EXTERNALSYM HLOG}
const
INVALID_HANDLE_VALUE = HANDLE(LONG_PTR(-1));
{$EXTERNALSYM INVALID_HANDLE_VALUE}
H_REALTIME_DATASOURCE = NULL;
{$EXTERNALSYM H_REALTIME_DATASOURCE}
H_WBEM_DATASOURCE = INVALID_HANDLE_VALUE;
{$EXTERNALSYM H_WBEM_DATASOURCE}
type
PPDH_RAW_COUNTER = ^PDH_RAW_COUNTER;
{$EXTERNALSYM PPDH_RAW_COUNTER}
_PDH_RAW_COUNTER = record
CStatus: DWORD;
TimeStamp: FILETIME;
FirstValue: LONGLONG;
SecondValue: LONGLONG;
MultiCount: DWORD;
end;
{$EXTERNALSYM _PDH_RAW_COUNTER}
PDH_RAW_COUNTER = _PDH_RAW_COUNTER;
{$EXTERNALSYM PDH_RAW_COUNTER}
TPdhRawCounter = PDH_RAW_COUNTER;
PPdhRawCounter = PPDH_RAW_COUNTER;
PPDH_RAW_COUNTER_ITEM_A = ^PDH_RAW_COUNTER_ITEM_A;
{$EXTERNALSYM PPDH_RAW_COUNTER_ITEM_A}
_PDH_RAW_COUNTER_ITEM_A = record
szName: LPSTR;
RawValue: PDH_RAW_COUNTER;
end;
{$EXTERNALSYM _PDH_RAW_COUNTER_ITEM_A}
PDH_RAW_COUNTER_ITEM_A = _PDH_RAW_COUNTER_ITEM_A;
{$EXTERNALSYM PDH_RAW_COUNTER_ITEM_A}
TPdhRawCounterItemA = PDH_RAW_COUNTER_ITEM_A;
PPdhRawCounterItemA = PPDH_RAW_COUNTER_ITEM_A;
PPDH_RAW_COUNTER_ITEM_W = ^PDH_RAW_COUNTER_ITEM_W;
{$EXTERNALSYM PPDH_RAW_COUNTER_ITEM_W}
_PDH_RAW_COUNTER_ITEM_W = record
szName: LPWSTR;
RawValue: PDH_RAW_COUNTER;
end;
{$EXTERNALSYM _PDH_RAW_COUNTER_ITEM_W}
PDH_RAW_COUNTER_ITEM_W = _PDH_RAW_COUNTER_ITEM_W;
{$EXTERNALSYM PDH_RAW_COUNTER_ITEM_W}
TPdhRawCounterItemW = PDH_RAW_COUNTER_ITEM_W;
PPdhRawCounterItemW = PPDH_RAW_COUNTER_ITEM_W;
{$IFDEF UNICODE}
PPdhRawCounterItem = PPdhRawCounterItemW;
PDH_RAW_COUNTER_ITEM = _PDH_RAW_COUNTER_ITEM_W;
{$EXTERNALSYM PDH_RAW_COUNTER_ITEM}
PPDH_RAW_COUNTER_ITEM = PPDH_RAW_COUNTER_ITEM_W;
{$EXTERNALSYM PPDH_RAW_COUNTER_ITEM}
TPdhRawCounterItem = _PDH_RAW_COUNTER_ITEM_W;
{$ELSE}
PPdhRawCounterItem = PPdhRawCounterItemA;
PDH_RAW_COUNTER_ITEM = _PDH_RAW_COUNTER_ITEM_A;
{$EXTERNALSYM PDH_RAW_COUNTER_ITEM}
PPDH_RAW_COUNTER_ITEM = PPDH_RAW_COUNTER_ITEM_A;
{$EXTERNALSYM PPDH_RAW_COUNTER_ITEM}
TPdhRawCounterItem = _PDH_RAW_COUNTER_ITEM_A;
{$ENDIF}
PPDH_FMT_COUNTERVALUE = ^PDH_FMT_COUNTERVALUE;
{$EXTERNALSYM PPDH_FMT_COUNTERVALUE}
_PDH_FMT_COUNTERVALUE = record
CStatus: DWORD;
case Longint of
1: (longValue: LONG);
2: (doubleValue: Double);
3: (largeValue: LONGLONG);
4: (AnsiStringValue: LPSTR);
5: (WideStringValue: LPCWSTR);
end;
{$EXTERNALSYM _PDH_FMT_COUNTERVALUE}
PDH_FMT_COUNTERVALUE = _PDH_FMT_COUNTERVALUE;
{$EXTERNALSYM PDH_FMT_COUNTERVALUE}
TPdhFmtCounterValue = PDH_FMT_COUNTERVALUE;
PPdhFmtCounterValue = PPDH_FMT_COUNTERVALUE;
PPDH_FMT_COUNTERVALUE_ITEM_A = ^PDH_FMT_COUNTERVALUE_ITEM_A;
{$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM_A}
_PDH_FMT_COUNTERVALUE_ITEM_A = record
szName: LPSTR;
FmtValue: PDH_FMT_COUNTERVALUE;
end;
{$EXTERNALSYM _PDH_FMT_COUNTERVALUE_ITEM_A}
PDH_FMT_COUNTERVALUE_ITEM_A = _PDH_FMT_COUNTERVALUE_ITEM_A;
{$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM_A}
TPdhFmtCounterValueItemA = PDH_FMT_COUNTERVALUE_ITEM_A;
PPdhFmtCounterValueItemA = PPDH_FMT_COUNTERVALUE_ITEM_A;
PPDH_FMT_COUNTERVALUE_ITEM_W = ^PDH_FMT_COUNTERVALUE_ITEM_W;
{$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM_W}
_PDH_FMT_COUNTERVALUE_ITEM_W = record
szName: LPWSTR;
FmtValue: PDH_FMT_COUNTERVALUE;
end;
{$EXTERNALSYM _PDH_FMT_COUNTERVALUE_ITEM_W}
PDH_FMT_COUNTERVALUE_ITEM_W = _PDH_FMT_COUNTERVALUE_ITEM_W;
{$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM_W}
TPdhFmtCounterValueItemW = PDH_FMT_COUNTERVALUE_ITEM_W;
PPdhFmtCounterValueItemW = PPDH_FMT_COUNTERVALUE_ITEM_W;
{$IFDEF UNICODE}
PPdhFmtCounterValueItem = PPdhFmtCounterValueItemW;
PDH_FMT_COUNTERVALUE_ITEM = _PDH_FMT_COUNTERVALUE_ITEM_W;
{$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM}
PPDH_FMT_COUNTERVALUE_ITEM = PPDH_FMT_COUNTERVALUE_ITEM_W;
{$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM}
TPdhFmtCounterValueItem = _PDH_FMT_COUNTERVALUE_ITEM_W;
{$ELSE}
PPdhFmtCounterValueItem = PPdhFmtCounterValueItemA;
PDH_FMT_COUNTERVALUE_ITEM = _PDH_FMT_COUNTERVALUE_ITEM_A;
{$EXTERNALSYM PDH_FMT_COUNTERVALUE_ITEM}
PPDH_FMT_COUNTERVALUE_ITEM = PPDH_FMT_COUNTERVALUE_ITEM_A;
{$EXTERNALSYM PPDH_FMT_COUNTERVALUE_ITEM}
TPdhFmtCounterValueItem = _PDH_FMT_COUNTERVALUE_ITEM_A;
{$ENDIF}
PPDH_STATISTICS = ^PDH_STATISTICS;
{$EXTERNALSYM PPDH_STATISTICS}
_PDH_STATISTICS = record
dwFormat: DWORD;
Count: DWORD;
min: PDH_FMT_COUNTERVALUE;
max: PDH_FMT_COUNTERVALUE;
mean: PDH_FMT_COUNTERVALUE;
end;
{$EXTERNALSYM _PDH_STATISTICS}
PDH_STATISTICS = _PDH_STATISTICS;
{$EXTERNALSYM PDH_STATISTICS}
TPdhStatistics = PDH_STATISTICS;
PPdhStatistics = PPDH_STATISTICS;
PPDH_COUNTER_PATH_ELEMENTS_A = ^PDH_COUNTER_PATH_ELEMENTS_A;
{$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS_A}
_PDH_COUNTER_PATH_ELEMENTS_A = record
szMachineName: LPSTR;
szObjectName: LPSTR;
szInstanceName: LPSTR;
szParentInstance: LPSTR;
dwInstanceIndex: DWORD;
szCounterName: LPSTR;
end;
{$EXTERNALSYM _PDH_COUNTER_PATH_ELEMENTS_A}
PDH_COUNTER_PATH_ELEMENTS_A = _PDH_COUNTER_PATH_ELEMENTS_A;
{$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS_A}
TPdhCounterPathElementsA = PDH_COUNTER_PATH_ELEMENTS_A;
PPdhCounterPathElementsA = PPDH_COUNTER_PATH_ELEMENTS_A;
PPDH_COUNTER_PATH_ELEMENTS_W = ^PDH_COUNTER_PATH_ELEMENTS_W;
{$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS_W}
_PDH_COUNTER_PATH_ELEMENTS_W = record
szMachineName: LPWSTR;
szObjectName: LPWSTR;
szInstanceName: LPWSTR;
szParentInstance: LPWSTR;
dwInstanceIndex: DWORD;
szCounterName: LPWSTR;
end;
{$EXTERNALSYM _PDH_COUNTER_PATH_ELEMENTS_W}
PDH_COUNTER_PATH_ELEMENTS_W = _PDH_COUNTER_PATH_ELEMENTS_W;
{$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS_W}
TPdhCounterPathElementsW = PDH_COUNTER_PATH_ELEMENTS_W;
PPdhCounterPathElementsW = PPDH_COUNTER_PATH_ELEMENTS_W;
{$IFDEF UNICODE}
PPdhCounterPathElements = PPdhCounterPathElementsW;
PDH_COUNTER_PATH_ELEMENTS = _PDH_COUNTER_PATH_ELEMENTS_W;
{$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS}
PPDH_COUNTER_PATH_ELEMENTS = PPDH_COUNTER_PATH_ELEMENTS_W;
{$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS}
TPdhCounterPathElements = _PDH_COUNTER_PATH_ELEMENTS_W;
{$ELSE}
PPdhCounterPathElements = PPdhCounterPathElementsA;
PDH_COUNTER_PATH_ELEMENTS = _PDH_COUNTER_PATH_ELEMENTS_A;
{$EXTERNALSYM PDH_COUNTER_PATH_ELEMENTS}
PPDH_COUNTER_PATH_ELEMENTS = PPDH_COUNTER_PATH_ELEMENTS_A;
{$EXTERNALSYM PPDH_COUNTER_PATH_ELEMENTS}
TPdhCounterPathElements = _PDH_COUNTER_PATH_ELEMENTS_A;
{$ENDIF}
PPDH_DATA_ITEM_PATH_ELEMENTS_A = ^PDH_DATA_ITEM_PATH_ELEMENTS_A;
{$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS_A}
_PDH_DATA_ITEM_PATH_ELEMENTS_A = record
szMachineName: LPSTR;
ObjectGUID: GUID;
dwItemId: DWORD;
szInstanceName: LPSTR;
end;
{$EXTERNALSYM _PDH_DATA_ITEM_PATH_ELEMENTS_A}
PDH_DATA_ITEM_PATH_ELEMENTS_A = _PDH_DATA_ITEM_PATH_ELEMENTS_A;
{$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS_A}
TPdhDataItemPathElementsA = PDH_DATA_ITEM_PATH_ELEMENTS_A;
PPdhDataItemPathElementsA = PPDH_DATA_ITEM_PATH_ELEMENTS_A;
PPDH_DATA_ITEM_PATH_ELEMENTS_W = ^PDH_DATA_ITEM_PATH_ELEMENTS_W;
{$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS_W}
_PDH_DATA_ITEM_PATH_ELEMENTS_W = record
szMachineName: LPWSTR;
ObjectGUID: GUID;
dwItemId: DWORD;
szInstanceName: LPWSTR;
end;
{$EXTERNALSYM _PDH_DATA_ITEM_PATH_ELEMENTS_W}
PDH_DATA_ITEM_PATH_ELEMENTS_W = _PDH_DATA_ITEM_PATH_ELEMENTS_W;
{$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS_W}
TPdhDataItemPathElementsW = PDH_DATA_ITEM_PATH_ELEMENTS_W;
PPdhDataItemPathElementsW = PPDH_DATA_ITEM_PATH_ELEMENTS_W;
{$IFDEF UNICODE}
PPdhDataItemPathElements = PPdhDataItemPathElementsW;
PDH_DATA_ITEM_PATH_ELEMENTS = _PDH_DATA_ITEM_PATH_ELEMENTS_W;
{$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS}
PPDH_DATA_ITEM_PATH_ELEMENTS = PPDH_DATA_ITEM_PATH_ELEMENTS_W;
{$EXTERNALSYM PPDH_DATA_ITEM_PATH_ELEMENTS}
TPdhDataItemPathElements = _PDH_DATA_ITEM_PATH_ELEMENTS_W;
{$ELSE}
PPdhDataItemPathElements = PPdhDataItemPathElementsA;
PDH_DATA_ITEM_PATH_ELEMENTS = _PDH_DATA_ITEM_PATH_ELEMENTS_A;
{$EXTERNALSYM PDH_DATA_ITEM_PATH_ELEMENTS}
PPDH_DATA_ITEM_PATH_ELEMENTS = PPDH_DATA_ITEM_PATH_ELEMENTS_A;
{$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}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -