*****************************************************************************) (* WinPerf.pas - performance data information for Windows NT *) (******************************************************************************) (* Copyright (C) 1993-1996 Microsoft Corporation *) (* *) (* Module Name: *) (* *) (* winperf.h *) (* *) (* Abstract: *) (* *) (* Header file for the Performance Monitor data. *) (* *) (* This file contains the definitions of the data structures returned *) (* by the Configuration Registry in response to a request for *) (* performance data. This file is used by both the Configuration *) (* Registry and the Performance Monitor to define their interface. *) (* The complete interface is described here, except for the name *) (* of the node to query in the registry. It is *) (* *) (* HKEY_PERFORMANCE_DATA. *) (* *) (* By querying that node with a subkey of "Global" the caller will *) (* retrieve the structures described here. *) (* *) (* There is no need to RegOpenKey() the reserved handle *) (* HKEY_PERFORMANCE_DATA, but the caller should RegCloseKey() the handle *) (* so that network transports and drivers can be removed or installed *) (* (which cannot happen while they are open for monitoring.) Remote *) (* requests must first RegConnectRegistry(). *) (
PPerfCounterBlock
PPerfCounterDefinition
PPerfDataBlock
PPerfInstanceDefinition
PPerfObjectType
TPerfCounterBlock
TPerfCounterDefinition
TPerfDataBlock
TPerfInstanceDefinition
TPerfObjectType
TPmCloseProc
TPmCollectProc
TPmOpenProc
PERF_100NSEC_MULTI_TIMER
PERF_100NSEC_MULTI_TIMER_INV
PERF_100NSEC_TIMER
PERF_100NSEC_TIMER_INV
PERF_AVERAGE_BASE
PERF_AVERAGE_BULK
PERF_AVERAGE_TIMER
PERF_COUNTER_BASE
PERF_COUNTER_BULK_COUNT
PERF_COUNTER_COUNTER
PERF_COUNTER_DELTA
PERF_COUNTER_ELAPSED
PERF_COUNTER_FRACTION
PERF_COUNTER_HISTOGRAM
PERF_COUNTER_HISTOGRAM_TYPE
PERF_COUNTER_LARGE_DELTA
PERF_COUNTER_LARGE_QUEUELEN_TYPE
PERF_COUNTER_LARGE_RAWCOUNT
PERF_COUNTER_LARGE_RAWCOUNT_HEX
PERF_COUNTER_MULTI_BASE
PERF_COUNTER_MULTI_TIMER
PERF_COUNTER_MULTI_TIMER_INV
PERF_COUNTER_NODATA
PERF_COUNTER_QUEUELEN
PERF_COUNTER_QUEUELEN_TYPE
PERF_COUNTER_RATE
PERF_COUNTER_RAWCOUNT
PERF_COUNTER_RAWCOUNT_HEX
PERF_COUNTER_TEXT
PERF_COUNTER_TIMER
PERF_COUNTER_TIMER_INV
PERF_COUNTER_VALUE
PERF_DATA_REVISION
PERF_DATA_VERSION
PERF_DELTA_BASE
PERF_DELTA_COUNTER
PERF_DETAIL_ADVANCED
PERF_DETAIL_EXPERT
PERF_DETAIL_NOVICE
PERF_DETAIL_WIZARD
PERF_DISPLAY_NOSHOW
PERF_DISPLAY_NO_SUFFIX
PERF_DISPLAY_PERCENT
PERF_DISPLAY_PER_SEC
PERF_DISPLAY_SECONDS
PERF_ELAPSED_TIME
PERF_INVERSE_COUNTER
PERF_MULTI_COUNTER
PERF_NO_INSTANCES
PERF_NO_UNIQUE_ID
PERF_NUMBER_DECIMAL
PERF_NUMBER_DEC_1000
PERF_NUMBER_HEX
PERF_OBJECT_TIMER
PERF_RAW_BASE
PERF_RAW_FRACTION
PERF_SAMPLE_BASE
PERF_SAMPLE_COUNTER
PERF_SAMPLE_FRACTION
PERF_SIZE_DWORD
PERF_SIZE_LARGE
PERF_SIZE_VARIABLE_LEN
PERF_SIZE_ZERO
PERF_TEXT_ASCII
PERF_TEXT_UNICODE
PERF_TIMER_100NS
PERF_TIMER_TICK
PERF_TYPE_COUNTER
PERF_TYPE_NUMBER
PERF_TYPE_TEXT
PERF_TYPE_ZERO
PPerfCounterBlock = ^TPerfCounterBlock
PPerfCounterDefinition = ^TPerfCounterDefinition
PPerfDataBlock = ^TPerfDataBlock
PPerfInstanceDefinition = ^TPerfInstanceDefinition
PPerfObjectType = ^TPerfObjectType
TPerfCounterBlock = record
ByteLength : DWORD;
end;
TPerfCounterDefinition = record
ByteLength : DWORD;
CounterNameTitleIndex : DWORD;
CounterNameTitle : LPWSTR;
CounterHelpTitleIndex : DWORD;
CounterHelpTitle : LPWSTR;
DefaultScale : Longint;
DetailLevel : DWORD;
CounterType : DWORD;
CounterSize : DWORD;
CounterOffset : DWORD;
end;
TPerfDataBlock = record
Signature : array[0..3] of WCHAR;
LittleEndian : DWORD;
Version : DWORD;
Revision : DWORD;
TotalByteLength : DWORD;
HeaderLength : DWORD;
NumObjectTypes : DWORD;
DefaultObject : Longint;
SystemTime : TSystemTime;
PerfTime : TLargeInteger;
PerfFreq : TLargeInteger;
PerfTime100nSec : TLargeInteger;
SystemNameLength : DWORD;
SystemNameOffset : DWORD;
end;
TPerfInstanceDefinition = record
ByteLength : DWORD;
ParentObjectTitleIndex : DWORD;
ParentObjectInstance : DWORD;
UniqueID : Longint;
NameOffset : DWORD;
NameLength : DWORD;
end;
TPerfObjectType = record
TotalByteLength : DWORD;
DefinitionLength : DWORD;
HeaderLength : DWORD;
ObjectNameTitleIndex : DWORD;
ObjectNameTitle : LPWSTR;
ObjectHelpTitleIndex : DWORD;
ObjectHelpTitle : LPWSTR;
DetailLevel : DWORD;
NumCounters : DWORD;
DefaultCounter : Longint;
NumInstances : Longint;
CodePage : DWORD;
PerfTime : TLargeInteger;
PerfFreq : TLargeInteger;
end;
TPmCloseProc = function: DWORD
TPmCollectProc = function(lpwszValue: LPWSTR; lppData: Pointer;
lpcbBytes: LPDWORD; lpcObjectTypes: LPDWORD): DWORD
TPmOpenProc = function(lpDeviceNames: LPWSTR): DWORD
PERF_100NSEC_MULTI_TIMER =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_DELTA_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_100NS or
PERF_MULTI_COUNTER or
PERF_DISPLAY_PERCENT
PERF_100NSEC_MULTI_TIMER_INV =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_DELTA_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_100NS or
PERF_MULTI_COUNTER or
PERF_INVERSE_COUNTER or
PERF_DISPLAY_PERCENT
PERF_100NSEC_TIMER =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_100NS or
PERF_DELTA_COUNTER or
PERF_DISPLAY_PERCENT
PERF_100NSEC_TIMER_INV =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_100NS or
PERF_DELTA_COUNTER or
PERF_INVERSE_COUNTER or
PERF_DISPLAY_PERCENT
PERF_AVERAGE_BASE =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_BASE or
PERF_DISPLAY_NOSHOW or
$00000002
PERF_AVERAGE_BULK =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_FRACTION or
PERF_DISPLAY_NOSHOW
for compatibility with pre-beta versions
PERF_AVERAGE_TIMER =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_FRACTION or
PERF_DISPLAY_SECONDS
for compatibility with pre-beta versions
PERF_COUNTER_BASE = $00030000
PERF_COUNTER_BULK_COUNT =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_DISPLAY_PER_SEC
PERF_COUNTER_COUNTER =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_DISPLAY_PER_SEC
PERF_COUNTER_DELTA =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_VALUE or
PERF_DELTA_COUNTER or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_ELAPSED = $00040000
PERF_COUNTER_FRACTION = $00020000
PERF_COUNTER_HISTOGRAM = $00060000
PERF_COUNTER_HISTOGRAM_TYPE = $80000000
PERF_COUNTER_LARGE_DELTA =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_VALUE or
PERF_DELTA_COUNTER or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_LARGE_QUEUELEN_TYPE =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_QUEUELEN or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_LARGE_RAWCOUNT =
PERF_SIZE_LARGE or
PERF_TYPE_NUMBER or
PERF_NUMBER_DECIMAL or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_LARGE_RAWCOUNT_HEX =
PERF_SIZE_LARGE or
PERF_TYPE_NUMBER or
PERF_NUMBER_HEX or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_MULTI_BASE =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_BASE or
PERF_MULTI_COUNTER or
PERF_DISPLAY_NOSHOW
PERF_COUNTER_MULTI_TIMER =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_DELTA_COUNTER or
PERF_TIMER_TICK or
PERF_MULTI_COUNTER or
PERF_DISPLAY_PERCENT
PERF_COUNTER_MULTI_TIMER_INV =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_DELTA_COUNTER or
PERF_MULTI_COUNTER or
PERF_TIMER_TICK or
PERF_INVERSE_COUNTER or
PERF_DISPLAY_PERCENT
PERF_COUNTER_NODATA =
PERF_SIZE_ZERO or
PERF_DISPLAY_NOSHOW
PERF_COUNTER_QUEUELEN = $00050000
PERF_COUNTER_QUEUELEN_TYPE =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_QUEUELEN or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_RATE = $00010000
PERF_COUNTER_RAWCOUNT =
PERF_SIZE_DWORD or
PERF_TYPE_NUMBER or
PERF_NUMBER_DECIMAL or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_RAWCOUNT_HEX =
PERF_SIZE_DWORD or
PERF_TYPE_NUMBER or
PERF_NUMBER_HEX or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_TEXT =
PERF_SIZE_VARIABLE_LEN or
PERF_TYPE_TEXT or
PERF_TEXT_UNICODE or
PERF_DISPLAY_NO_SUFFIX
PERF_COUNTER_TIMER =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_DISPLAY_PERCENT
PERF_COUNTER_TIMER_INV =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_INVERSE_COUNTER or
PERF_DISPLAY_PERCENT
PERF_COUNTER_VALUE = $00000000
PERF_DATA_REVISION = 1
PERF_DATA_VERSION = 1
Data structure definitions
PERF_DELTA_BASE = $00800000
PERF_DELTA_COUNTER = $00400000
PERF_DETAIL_ADVANCED = 200
PERF_DETAIL_EXPERT = 300
PERF_DETAIL_NOVICE = 100
PERF_DETAIL_WIZARD = 400
PERF_DISPLAY_NOSHOW = $40000000
PERF_DISPLAY_NO_SUFFIX = $00000000
PERF_DISPLAY_PERCENT = $20000000
PERF_DISPLAY_PER_SEC = $10000000
PERF_DISPLAY_SECONDS = $30000000
PERF_ELAPSED_TIME =
PERF_SIZE_LARGE or
PERF_TYPE_COUNTER or
PERF_COUNTER_ELAPSED or
PERF_OBJECT_TIMER or
PERF_DISPLAY_SECONDS
for compatibility with pre-beta versions
PERF_INVERSE_COUNTER = $01000000
PERF_MULTI_COUNTER = $02000000
PERF_NO_INSTANCES = -1
PERF_NO_UNIQUE_ID = -1
PERF_NUMBER_DECIMAL = $00010000
PERF_NUMBER_DEC_1000 = $00020000
PERF_NUMBER_HEX = $00000000
PERF_OBJECT_TIMER = $00200000
PERF_RAW_BASE =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_BASE or
PERF_DISPLAY_NOSHOW or
$00000003
PERF_RAW_FRACTION =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_FRACTION or
PERF_DISPLAY_PERCENT
PERF_SAMPLE_BASE =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_BASE or
PERF_DISPLAY_NOSHOW or
$00000001
PERF_SAMPLE_COUNTER =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_RATE or
PERF_TIMER_TICK or
PERF_DELTA_COUNTER or
PERF_DISPLAY_NO_SUFFIX
PERF_SAMPLE_FRACTION =
PERF_SIZE_DWORD or
PERF_TYPE_COUNTER or
PERF_COUNTER_FRACTION or
PERF_DELTA_COUNTER or
PERF_DELTA_BASE or
PERF_DISPLAY_PERCENT
PERF_SIZE_DWORD = $00000000
PERF_SIZE_LARGE = $00000100
PERF_SIZE_VARIABLE_LEN = $00000300
PERF_SIZE_ZERO = $00000200
PERF_TEXT_ASCII = $00010000
PERF_TEXT_UNICODE = $00000000
PERF_TIMER_100NS = $00100000
PERF_TIMER_TICK = $00000000
PERF_TYPE_COUNTER = $00000400
PERF_TYPE_NUMBER = $00000000
PERF_TYPE_TEXT = $00000800
PERF_TYPE_ZERO = $00000C00