Unit Winperf

*****************************************************************************) (* 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(). *) (

Classes

Functions

Types

PPerfCounterBlock
PPerfCounterDefinition
PPerfDataBlock
PPerfInstanceDefinition
PPerfObjectType
TPerfCounterBlock
TPerfCounterDefinition
TPerfDataBlock
TPerfInstanceDefinition
TPerfObjectType
TPmCloseProc
TPmCollectProc
TPmOpenProc

Constants

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

Variables


Functions


Types


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

Constants

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


Variables