⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdh.pas

📁 在delphi中实现windows核心编程.原书光盘代码核心编程.原书光盘代码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
          TlLogHandle: DWORD;
          TlLogFileName: PWideChar);
    end;
  end;
  {$EXTERNALSYM _PDH_LOG_SERVICE_QUERY_INFO_W}
  _PDH_LOG_SERVICE_QUERY_INFO_ = _PDH_LOG_SERVICE_QUERY_INFO_A;
  TPdhLogServiceQueryInfoA = _PDH_LOG_SERVICE_QUERY_INFO_A;
  TPdhLogServiceQueryInfoW = _PDH_LOG_SERVICE_QUERY_INFO_W;
  TPdhLogServiceQueryInfo = TPdhLogServiceQueryInfoA;

//
//  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): Longint; stdcall;
{$EXTERNALSYM PdhGetDllVersion}

//
//  Query Functions
//

function PdhOpenQueryA(szDataSource: PAnsiChar; dwUserData: DWORD_PTR;
  var phQuery: HQUERY): Longint; stdcall;
{$EXTERNALSYM PdhOpenQueryA}
function PdhOpenQueryW(szDataSource: PWideChar; dwUserData: DWORD_PTR;
  var phQuery: HQUERY): Longint; stdcall;
{$EXTERNALSYM PdhOpenQueryW}
function PdhOpenQuery(szDataSource: PChar; dwUserData: DWORD_PTR;
  var phQuery: HQUERY): Longint; stdcall;
{$EXTERNALSYM PdhOpenQuery}

function PdhAddCounterA(hQuery: HQUERY; szFullCounterPath: PAnsiChar;
  dwUserData: DWORD_PTR; var phCounter: HCOUNTER): Longint; stdcall;
{$EXTERNALSYM PdhAddCounterA}
function PdhAddCounterW(hQuery: HQUERY; szFullCounterPath: PWideChar;
  dwUserData: DWORD_PTR; var phCounter: HCOUNTER): Longint; stdcall;
{$EXTERNALSYM PdhAddCounterW}
function PdhAddCounter(hQuery: HQUERY; szFullCounterPath: PChar;
  dwUserData: DWORD_PTR; var phCounter: HCOUNTER): Longint; stdcall;
{$EXTERNALSYM PdhAddCounter}

function PdhRemoveCounter(hCounter: HCOUNTER): Longint; stdcall;
{$EXTERNALSYM PdhRemoveCounter}

function PdhCollectQueryData(hQuery: HQUERY): Longint; stdcall;
{$EXTERNALSYM PdhCollectQueryData}

function PdhCloseQuery(hQuery: HQUERY): Longint; stdcall;
{$EXTERNALSYM PdhCloseQuery}

//
//  Counter Functions
//

function PdhGetFormattedCounterValue(hCounter: HCOUNTER; dwFormat: DWORD;
  lpdwType: LPDWORD; var pValue: TPdhFmtCounterValue): Longint; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterValue}

function PdhGetFormattedCounterArrayA(hCounter: HCOUNTER; dwFormat: DWORD;
  lpdwBufferSize: LPDWORD; lpdwItemCount: LPDWORD;
  ItemBuffer: PPdhFmtCounterValueItemA): Longint; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArrayA}
function PdhGetFormattedCounterArrayW(hCounter: HCOUNTER; dwFormat: DWORD;
  lpdwBufferSize: LPDWORD; lpdwItemCount: LPDWORD;
  ItemBuffer: PPdhFmtCounterValueItemW): Longint; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArrayW}
function PdhGetFormattedCounterArray(hCounter: HCOUNTER; dwFormat: DWORD;
  lpdwBufferSize: LPDWORD; lpdwItemCount: LPDWORD;
  ItemBuffer: PPdhFmtCounterValueItem): Longint; stdcall;
{$EXTERNALSYM PdhGetFormattedCounterArray}

// 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}
  PDH_FMT_LARGE   = DWORD($00000400);
  {$EXTERNALSYM PDH_FMT_LARGE}
  PDH_FMT_NOSCALE = DWORD($00001000);
  {$EXTERNALSYM PDH_FMT_NOSCALE}
  PDH_FMT_1000    = DWORD($00002000);
  {$EXTERNALSYM PDH_FMT_1000}
  PDH_FMT_NODATA  = DWORD($00004000);
  {$EXTERNALSYM PDH_FMT_NODATA}

  PERF_DETAIL_COSTLY   = DWORD($00010000);
  {$EXTERNALSYM PERF_DETAIL_COSTLY}
  PERF_DETAIL_STANDARD = DWORD($0000FFFF);
  {$EXTERNALSYM PERF_DETAIL_STANDARD}

function PdhGetRawCounterValue(hCounter: HCOUNTER; lpdwType: LPDWORD;
  var pValue: TPdhRawCounter): Longint; stdcall;
{$EXTERNALSYM PdhGetRawCounterValue}

function PdhGetRawCounterArrayA(hCounter: HCOUNTER; lpdwBufferSize: LPDWORD;
  lpdwItemCount: LPDWORD; ItemBuffer: PPdhRawCounterItemA): Longint; stdcall;
{$EXTERNALSYM PdhGetRawCounterArrayA}
function PdhGetRawCounterArrayW(hCounter: HCOUNTER; lpdwBufferSize: LPDWORD;
  lpdwItemCount: LPDWORD; ItemBuffer: PPdhRawCounterItemW): Longint; stdcall;
{$EXTERNALSYM PdhGetRawCounterArrayW}
function PdhGetRawCounterArray(hCounter: HCOUNTER; lpdwBufferSize: LPDWORD;
  lpdwItemCount: LPDWORD; ItemBuffer: PPdhRawCounterItem): Longint; stdcall;
{$EXTERNALSYM PdhGetRawCounterArray}

function PdhCalculateCounterFromRawValue(hCounter: HCOUNTER; dwFormat: DWORD;
  rawValue1, rawValue2: PPdhRawCounter; fmtValue: PPdhFmtCounterValue): Longint; stdcall;
{$EXTERNALSYM PdhCalculateCounterFromRawValue}

function PdhComputeCounterStatistics(hCounter: HCOUNTER; dwFormat, dwFirstEntry,
  dwNumEntries: DWORD; lpRawValueArray: PPdhRawCounter; var data: TPdhStatistics): Longint; stdcall;
{$EXTERNALSYM PdhComputeCounterStatistics}

function PdhGetCounterInfoA(hCounter: HCOUNTER; bRetrieveExplainText: Boolean;
  pdwBufferSize: LPDWORD; lpBuffer: PPdhCounterInfoA): Longint; stdcall;
{$EXTERNALSYM PdhGetCounterInfoA}
function PdhGetCounterInfoW(hCounter: HCOUNTER; bRetrieveExplainText: Boolean;
  pdwBufferSize: LPDWORD; lpBuffer: PPdhCounterInfoW): Longint; stdcall;
{$EXTERNALSYM PdhGetCounterInfoW}
function PdhGetCounterInfo(hCounter: HCOUNTER; bRetrieveExplainText: Boolean;
  pdwBufferSize: LPDWORD; lpBuffer: PPdhCounterInfo): Longint; stdcall;
{$EXTERNALSYM PdhGetCounterInfo}

const
  PDH_MAX_SCALE = Longint(7);
  {$EXTERNALSYM PDH_MAX_SCALE}
  PDH_MIN_SCALE = Longint(-7);
  {$EXTERNALSYM PDH_MIN_SCALE}

function PdhSetCounterScaleFactor(hCounter: HCOUNTER; lFactor: Longint): Longint; stdcall;
{$EXTERNALSYM PdhSetCounterScaleFactor}

//
//   Browsing and enumeration functions
//

function PdhConnectMachineA(szMachineName: PAnsiChar): Longint; stdcall;
{$EXTERNALSYM PdhConnectMachineA}
function PdhConnectMachineW(szMachineName: PWideChar): Longint; stdcall;
{$EXTERNALSYM PdhConnectMachineW}
function PdhConnectMachine(szMachineName: PChar): Longint; stdcall;
{$EXTERNALSYM PdhConnectMachine}

function PdhEnumMachinesA(szDataSource: PAnsiChar; mszMachineList: PAnsiChar;
  var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhEnumMachinesA}
function PdhEnumMachinesW(szDataSource: PWideChar; mszMachineList: PWideChar;
  var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhEnumMachinesW}
function PdhEnumMachines(szDataSource: PChar; mszMachineList: PChar;
  var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhEnumMachines}

function PdhEnumObjectsA(szDataSource, szMachineName: PAnsiChar; mszObjectList: PAnsiChar;
  var pcchBufferSize: DWORD; dwDetailLevel: DWORD; bRefresh: BOOL): Longint; stdcall;
{$EXTERNALSYM PdhEnumObjectsA}
function PdhEnumObjectsW(szDataSource, szMachineName: PWideChar; mszObjectList: PWideChar;
  var pcchBufferSize: DWORD; dwDetailLevel: DWORD; bRefresh: BOOL): Longint; stdcall;
{$EXTERNALSYM PdhEnumObjectsW}
function PdhEnumObjects(szDataSource, szMachineName: PChar; mszObjectList: PChar;
  var pcchBufferSize: DWORD; dwDetailLevel: DWORD; bRefresh: BOOL): Longint; stdcall;
{$EXTERNALSYM PdhEnumObjects}

function PdhEnumObjectItemsA(szDataSource, szMachineName, szObjectName: PAnsiChar;
  mszCounterList: PAnsiChar; var pcchCounterListLength: DWORD; mszInstanceList: PAnsiChar;
  var pcchInstanceListLength: DWORD; dwDetailLevel, dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhEnumObjectItemsA}
function PdhEnumObjectItemsW(szDataSource, szMachineName, szObjectName: PWideChar;
  mszCounterList: PWideChar; var pcchCounterListLength: DWORD; mszInstanceList: PWideChar;
  var pcchInstanceListLength: DWORD; dwDetailLevel, dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhEnumObjectItemsW}
function PdhEnumObjectItems(szDataSource, szMachineName, szObjectName: PChar;
  mszCounterList: PChar; var pcchCounterListLength: DWORD; mszInstanceList: PChar;
  var pcchInstanceListLength: DWORD; dwDetailLevel, dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhEnumObjectItems}

function PdhMakeCounterPathA(pCounterPathElements: PPdhCounterPathElementsA;
  szFullPathBuffer: PAnsiChar; var pcchBufferSize: DWORD; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhMakeCounterPathA}
function PdhMakeCounterPathW(pCounterPathElements: PPdhCounterPathElementsW;
  szFullPathBuffer: PWideChar; var pcchBufferSize: DWORD; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhMakeCounterPathW}
function PdhMakeCounterPath(pCounterPathElements: PPdhCounterPathElements;
  szFullPathBuffer: PChar; var pcchBufferSize: DWORD; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhMakeCounterPath}

function PdhParseCounterPathA(szFullPathBuffer: PAnsiChar; pCounterPathElements:
  PPdhCounterPathElementsA; var pdwBufferSize: DWORD; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhParseCounterPathA}
function PdhParseCounterPathW(szFullPathBuffer: PWideChar; pCounterPathElements:
  PPdhCounterPathElementsW; var pdwBufferSize: DWORD; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhParseCounterPathW}
function PdhParseCounterPath(szFullPathBuffer: PChar; pCounterPathElements:
  PPdhCounterPathElements; var pdwBufferSize: DWORD; dwFlags: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhParseCounterPath}

const
  PDH_PATH_WBEM_RESULT       = DWORD($00000001);
  {$EXTERNALSYM PDH_PATH_WBEM_RESULT}
  PDH_PATH_WBEM_INPUT        = DWORD($00000002);
  {$EXTERNALSYM PDH_PATH_WBEM_INPUT}

function PDH_PATH_LANG_FLAGS(LangId, Flags: DWORD): DWORD;
{$EXTERNALSYM PDH_PATH_LANG_FLAGS}

function PdhParseInstanceNameA(szInstanceString: PAnsiChar; szInstanceName: PAnsiChar;
  var pcchInstanceNameLength: DWORD; szParentName: PAnsiChar;
  var pcchParentNameLength: DWORD; lpIndex: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhParseInstanceNameA}
function PdhParseInstanceNameW(szInstanceString: PWideChar; szInstanceName: PWideChar;
  var pcchInstanceNameLength: DWORD; szParentName: PWideChar;
  var pcchParentNameLength: DWORD; lpIndex: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhParseInstanceNameW}
function PdhParseInstanceName(szInstanceString: PChar; szInstanceName: PChar;
  var pcchInstanceNameLength: DWORD; szParentName: PChar;
  var pcchParentNameLength: DWORD; lpIndex: LPDWORD): Longint; stdcall;
{$EXTERNALSYM PdhParseInstanceName}

function PdhValidatePathA(szFullPathBuffer: PAnsiChar): Longint; stdcall;
{$EXTERNALSYM PdhValidatePathA}
function PdhValidatePathW(szFullPathBuffer: PWideChar): Longint; stdcall;
{$EXTERNALSYM PdhValidatePathW}
function PdhValidatePath(szFullPathBuffer: PChar): Longint; stdcall;
{$EXTERNALSYM PdhValidatePath}

function PdhGetDefaultPerfObjectA(szDataSource, szMachineName: PAnsiChar;
  szDefaultObjectName: PAnsiChar; var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDefaultPerfObjectA}
function PdhGetDefaultPerfObjectW(szDataSource, szMachineName: PWideChar;
  szDefaultObjectName: PWideChar; var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDefaultPerfObjectW}
function PdhGetDefaultPerfObject(szDataSource, szMachineName: PChar;
  szDefaultObjectName: PChar; var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDefaultPerfObject}

function PdhGetDefaultPerfCounterA(szDataSource, szMachineName, szObjectName: PAnsiChar;
  szDefaultCounterName: PAnsiChar; var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDefaultPerfCounterA}
function PdhGetDefaultPerfCounterW(szDataSource, szMachineName, szObjectName: PWideChar;
  szDefaultCounterName: PWideChar; var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDefaultPerfCounterW}
function PdhGetDefaultPerfCounter(szDataSource, szMachineName, szObjectName: PChar;
  szDefaultCounterName: PChar; var pcchBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhGetDefaultPerfCounter}

type
  CounterPathCallBack = function (dwArg: DWORD_PTR): Longint; stdcall;
  {$EXTERNALSYM CounterPathCallBack}

const
  PDH_CF_INCLUDEINSTANCEINDEX    = 1 shl 0;
  PDH_CF_SINGLECOUNTERPERADD     = 1 shl 1;
  PDH_CF_SINGLECOUNTERPERDIALOG  = 1 shl 2;
  PDH_CF_LOCALCOUNTERSONLY       = 1 shl 3;
  PDH_CF_WILDCARDINSTANCES       = 1 shl 4;
  PDH_CF_HIDEDETAILBOX           = 1 shl 5;
  PDH_CF_INITIALIZEPATH          = 1 shl 6;
  PDH_CF_DISABLEMACHINESELECTION = 1 shl 7;
  PDH_CF_INCLUDECOSTLYOBJECTS    = 1 shl 8;
  PDH_CF_RESERVED                = DWORD($FFFFFE00);

type
  PPdhBrowseDlgConfigA = ^TPdhBrowseDlgConfigA;
  PPdhBrowseDlgConfigW = ^TPdhBrowseDlgConfigW;
  PPdhBrowseDlgConfig = PPdhBrowseDlgConfigA;
  _BrowseDlgConfig_A = record
    dwConfigFlags: DWORD;
    hWndOwner: HWND;
    szDataSource: PAnsiChar;
    szReturnPathBuffer: PAnsiChar;
    cchReturnPathLength: DWORD;
    pCallBack: CounterPathCallBack;
    dwCallBackArg: DWORD_PTR;
    CallBackStatus: PDH_STATUS;
    dwDefaultDetailLevel: DWORD;
    szDialogBoxCaption: PAnsiChar;
  end;
  {$EXTERNALSYM _BrowseDlgConfig_A}
  _BrowseDlgConfig_W = record
    dwConfigFlags: DWORD;
    hWndOwner: HWND;
    szDataSource: PWideChar;
    szReturnPathBuffer: PWideChar;
    cchReturnPathLength: DWORD;
    pCallBack: CounterPathCallBack;
    dwCallBackArg: DWORD_PTR;
    CallBackStatus: PDH_STATUS;
    dwDefaultDetailLevel: DWORD;
    szDialogBoxCaption: PWideChar;
  end;
  {$EXTERNALSYM _BrowseDlgConfig_W}
  _BrowseDlgConfig_ = _BrowseDlgConfig_A;
  TPdhBrowseDlgConfigA = _BrowseDlgConfig_A;
  TPdhBrowseDlgConfigW = _BrowseDlgConfig_W;
  TPdhBrowseDlgConfig = TPdhBrowseDlgConfigA;

function PdhBrowseCountersA(var pBrowseDlgData: TPdhBrowseDlgConfigA): Longint; stdcall;
{$EXTERNALSYM PdhBrowseCountersA}
function PdhBrowseCountersW(var pBrowseDlgData: TPdhBrowseDlgConfigW): Longint; stdcall;
{$EXTERNALSYM PdhBrowseCountersW}
function PdhBrowseCounters(var pBrowseDlgData: TPdhBrowseDlgConfig): Longint; stdcall;
{$EXTERNALSYM PdhBrowseCounters}

function PdhExpandCounterPathA(szWildCardPath: PAnsiChar; mszExpandedPathList: PAnsiChar;
  var pcchPathListLength: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhExpandCounterPathA}
function PdhExpandCounterPathW(szWildCardPath: PWideChar; mszExpandedPathList: PWideChar;
  var pcchPathListLength: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhExpandCounterPathW}
function PdhExpandCounterPath(szWildCardPath: PChar; mszExpandedPathList: PChar;
  var pcchPathListLength: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhExpandCounterPath}

//
//  v2.0 functions
//

function PdhLookupPerfNameByIndexA(szMachineName: PAnsiChar; dwNameIndex: DWORD;
  szNameBuffer: PAnsiChar; var pcchNameBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhLookupPerfNameByIndexA}
function PdhLookupPerfNameByIndexW(szMachineName: PWideChar; dwNameIndex: DWORD;
  szNameBuffer: PWideChar; var pcchNameBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhLookupPerfNameByIndexW}
function PdhLookupPerfNameByIndex(szMachineName: PChar; dwNameIndex: DWORD;
  szNameBuffer: PChar; var pcchNameBufferSize: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhLookupPerfNameByIndex}

function PdhLookupPerfIndexByNameA(szMachineName, szNameBuffer: PAnsiChar;
  var pdwIndex: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhLookupPerfIndexByNameA}
function PdhLookupPerfIndexByNameW(szMachineName, szNameBuffer: PWideChar;
  var pdwIndex: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhLookupPerfIndexByNameW}
function PdhLookupPerfIndexByName(szMachineName, szNameBuffer: PChar;
  var pdwIndex: DWORD): Longint; stdcall;
{$EXTERNALSYM PdhLookupPerfIndexByName}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -