Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek perflib.rs   Sprache: unbekannt

 
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use shared::basetsd::SIZE_T;
use shared::guiddef::{GUID, LPCGUID, LPGUID};
use shared::minwindef::{DWORD, LPBYTE, LPDWORD, LPVOID, ULONG};
use um::minwinbase::SYSTEMTIME;
use um::winnt::{HANDLE, LONG, LONGLONG, LPCWSTR, PCWSTR, PHANDLE, PVOID, ULONGLONG};
pub const PERF_PROVIDER_USER_MODE: ULONG = 0;
pub const PERF_PROVIDER_KERNEL_MODE: ULONG = 1;
pub const PERF_PROVIDER_DRIVER: ULONG = 2;
pub const PERF_COUNTERSET_FLAG_MULTIPLE: ULONG = 2;
pub const PERF_COUNTERSET_FLAG_AGGREGATE: ULONG = 4;
pub const PERF_COUNTERSET_FLAG_HISTORY: ULONG = 8;
pub const PERF_COUNTERSET_FLAG_INSTANCE: ULONG = 16;
pub const PERF_COUNTERSET_SINGLE_INSTANCE: ULONG = 0;
pub const PERF_COUNTERSET_MULTI_INSTANCES: ULONG = PERF_COUNTERSET_FLAG_MULTIPLE;
pub const PERF_COUNTERSET_SINGLE_AGGREGATE: ULONG = PERF_COUNTERSET_FLAG_AGGREGATE;
pub const PERF_COUNTERSET_MULTI_AGGREGATE: ULONG = PERF_COUNTERSET_FLAG_AGGREGATE
    | PERF_COUNTERSET_FLAG_MULTIPLE;
pub const PERF_COUNTERSET_SINGLE_AGGREGATE_HISTORY: ULONG = PERF_COUNTERSET_FLAG_HISTORY
    | PERF_COUNTERSET_SINGLE_AGGREGATE;
pub const PERF_COUNTERSET_INSTANCE_AGGREGATE: ULONG = PERF_COUNTERSET_MULTI_AGGREGATE
    | PERF_COUNTERSET_FLAG_INSTANCE;
pub const PERF_AGGREGATE_UNDEFINED: ULONG = 0;
pub const PERF_AGGREGATE_TOTAL: ULONG = 1;
pub const PERF_AGGREGATE_AVG: ULONG = 2;
pub const PERF_AGGREGATE_MIN: ULONG = 3;
pub const PERF_AGGREGATE_MAX: ULONG = 4;
pub const PERF_ATTRIB_BY_REFERENCE: ULONGLONG = 0x0000000000000001;
pub const PERF_ATTRIB_NO_DISPLAYABLE: ULONGLONG = 0x0000000000000002;
pub const PERF_ATTRIB_NO_GROUP_SEPARATOR: ULONGLONG = 0x0000000000000004;
pub const PERF_ATTRIB_DISPLAY_AS_REAL: ULONGLONG = 0x0000000000000008;
pub const PERF_ATTRIB_DISPLAY_AS_HEX: ULONGLONG = 0x0000000000000010;
STRUCT!{struct PERF_COUNTERSET_INFO {
    CounterSetGuid: GUID,
    ProviderGuid: GUID,
    NumCounters: ULONG,
    InstanceType: ULONG,
}}
pub type PPERF_COUNTERSET_INFO = *mut PERF_COUNTERSET_INFO;
STRUCT!{struct PERF_COUNTER_INFO {
    CounterId: ULONG,
    Type: ULONG,
    Attrib: ULONGLONG,
    Size: ULONG,
    DetailLevel: ULONG,
    Scale: LONG,
    Offset: LONG,
}}
pub type PPERF_COUNTER_INFO = *mut PERF_COUNTER_INFO;
STRUCT!{struct PERF_COUNTERSET_INSTANCE {
    CounterSetGuid: GUID,
    dwSize: ULONG,
    InstanceId: ULONG,
    InstanceNameOffset: ULONG,
    InstanceNameSize: ULONG,
}}
pub type PPERF_COUNTERSET_INSTANCE = *mut PERF_COUNTERSET_INSTANCE;
STRUCT!{struct PERF_COUNTER_IDENTITY {
    CounterSetGuid: GUID,
    BufferSize: ULONG,
    CounterId: ULONG,
    InstanceId: ULONG,
    MachineOffset: ULONG,
    NameOffset: ULONG,
    Reserved: ULONG,
}}
pub type PPERF_COUNTER_IDENTITY = *mut PERF_COUNTER_IDENTITY;
pub const PERF_WILDCARD_COUNTER: ULONG = 0xFFFFFFFF;
pub const PERF_WILDCARD_INSTANCE: &'static str = "*";
pub const PERF_AGGREGATE_INSTANCE: &'static str = "_Total";
pub const PERF_MAX_INSTANCE_NAME: ULONG = 1024;
pub const PERF_ADD_COUNTER: ULONG = 1;
pub const PERF_REMOVE_COUNTER: ULONG = 2;
pub const PERF_ENUM_INSTANCES: ULONG = 3;
pub const PERF_COLLECT_START: ULONG = 5;
pub const PERF_COLLECT_END: ULONG = 6;
pub const PERF_FILTER: ULONG = 9;
FN!{stdcall PERFLIBREQUEST(
    RequestCode: ULONG,
    Buffer: PVOID,
    BufferSize: ULONG,
) -> ULONG}
FN!{stdcall PERF_MEM_ALLOC(
    AllocSize: SIZE_T,
    pContext: LPVOID,
) -> LPVOID}
FN!{stdcall PERF_MEM_FREE(
    pBuffer: LPVOID,
    pContext: LPVOID,
) -> ()}
STRUCT!{struct PERF_PROVIDER_CONTEXT {
    ContextSize: DWORD,
    Reserved: DWORD,
    ControlCallback: PERFLIBREQUEST,
    MemAllocRoutine: PERF_MEM_ALLOC,
    MemFreeRoutine: PERF_MEM_FREE,
    pMemContext: LPVOID,
}}
pub type PPERF_PROVIDER_CONTEXT = *mut PERF_PROVIDER_CONTEXT;
extern "system" {
    pub fn PerfStartProviderEx(
        ProviderGuid: LPGUID,
        ProviderContext: PPERF_PROVIDER_CONTEXT,
        Provider: PHANDLE,
    ) -> ULONG;
    pub fn PerfStartProvider(
        ProviderGuid: LPGUID,
        ControlCallback: PERFLIBREQUEST,
        Provider: PHANDLE,
    ) -> ULONG;
    pub fn PerfStopProvider(
        ProviderHandle: HANDLE,
    ) -> ULONG;
    pub fn PerfSetCounterSetInfo(
        ProviderHandle: HANDLE,
        Template: PPERF_COUNTERSET_INFO,
        TemplateSize: ULONG,
    ) -> ULONG;
    pub fn PerfCreateInstance(
        ProviderHandle: HANDLE,
        CounterSetGuid: LPCGUID,
        Name: PCWSTR,
        Id: ULONG,
    ) -> PPERF_COUNTERSET_INSTANCE;
    pub fn PerfDeleteInstance(
        Provider: HANDLE,
        InstanceBlock: PPERF_COUNTERSET_INSTANCE,
    ) -> ULONG;
    pub fn PerfQueryInstance(
        ProviderHandle: HANDLE,
        CounterSetGuid: LPCGUID,
        Name: LPCWSTR,
        Id: ULONG,
    ) -> PPERF_COUNTERSET_INSTANCE;
    pub fn PerfSetCounterRefValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Address: PVOID,
    ) -> ULONG;
    pub fn PerfSetULongCounterValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Value: ULONG,
    ) -> ULONG;
    pub fn PerfSetULongLongCounterValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Value: ULONGLONG,
    ) -> ULONG;
    pub fn PerfIncrementULongCounterValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Value: ULONG,
    ) -> ULONG;
    pub fn PerfIncrementULongLongCounterValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Value: ULONGLONG,
    ) -> ULONG;
    pub fn PerfDecrementULongCounterValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Value: ULONG,
    ) -> ULONG;
    pub fn PerfDecrementULongLongCounterValue(
        Provider: HANDLE,
        Instance: PPERF_COUNTERSET_INSTANCE,
        CounterId: ULONG,
        Value: ULONGLONG,
    ) -> ULONG;
}
STRUCT!{struct PERF_INSTANCE_HEADER {
    Size: ULONG,
    InstanceId: ULONG,
}}
pub type PPERF_INSTANCE_HEADER = *mut PERF_INSTANCE_HEADER;
ENUM!{enum PerfRegInfoType {
    PERF_REG_COUNTERSET_STRUCT = 1,
    PERF_REG_COUNTER_STRUCT,
    PERF_REG_COUNTERSET_NAME_STRING,
    PERF_REG_COUNTERSET_HELP_STRING,
    PERF_REG_COUNTER_NAME_STRINGS,
    PERF_REG_COUNTER_HELP_STRINGS,
    PERF_REG_PROVIDER_NAME,
    PERF_REG_PROVIDER_GUID,
    PERF_REG_COUNTERSET_ENGLISH_NAME,
    PERF_REG_COUNTER_ENGLISH_NAMES,
}}
STRUCT!{struct PERF_COUNTERSET_REG_INFO {
    CounterSetGuid: GUID,
    CounterSetType: ULONG,
    DetailLevel: ULONG,
    NumCounters: ULONG,
    InstanceType: ULONG,
}}
pub type PPERF_COUNTERSET_REG_INFO = *mut PERF_COUNTERSET_REG_INFO;
STRUCT!{struct PERF_COUNTER_REG_INFO {
    CounterId: ULONG,
    Type: ULONG,
    Attrib: ULONGLONG,
    DetailLevel: ULONG,
    DefaultScale: LONG,
    BaseCounterId: ULONG,
    PerfTimeId: ULONG,
    PerfFreqId: ULONG,
    MultiId: ULONG,
    AggregateFinc: ULONG,
    Reserved: ULONG,
}}
pub type PPERF_COUNTER_REG_INFO = *mut PERF_COUNTER_REG_INFO;
STRUCT!{struct PERF_STRING_BUFFER_HEADER {
    dwSize: DWORD,
    dwCounters: DWORD,
}}
pub type PPERF_STRING_BUFFER_HEADER = *mut PERF_STRING_BUFFER_HEADER;
STRUCT!{struct PERF_STRING_COUNTER_HEADER {
    dwCounterId: DWORD,
    dwOffset: DWORD,
}}
pub type PPERF_STRING_COUNTER_HEADER = *mut PERF_STRING_COUNTER_HEADER;
STRUCT!{struct PERF_COUNTER_IDENTIFIER {
    CounterSetGuid: GUID,
    Status: ULONG,
    Size: ULONG,
    CounterId: ULONG,
    InstanceId: ULONG,
    Index: ULONG,
    Reserved: ULONG,
}}
pub type PPERF_COUNTER_IDENTIFIER = *mut PERF_COUNTER_IDENTIFIER;
STRUCT!{struct PERF_DATA_HEADER {
    dwTotalSize: ULONG,
    dwNumCounters: ULONG,
    PerfTimeStamp: LONGLONG,
    PerfTime100NSec: LONGLONG,
    PrefFreq: LONGLONG,
    SystemTime: SYSTEMTIME,
}}
pub type PPERF_DATA_HEADER = *mut PERF_DATA_HEADER;
ENUM!{enum PerfCounterDataType {
    PERF_ERROR_RETURN = 0,
    PERF_SINGLE_COUNTER = 1,
    PERF_MULTIPLE_COUNTERS = 2,
    PERF_MULTIPLE_INSTANCES = 4,
    PERF_COUNTERSET = 6,
}}
STRUCT!{struct PERF_COUNTER_HEADER {
    dwStatus: ULONG,
    dwType: PerfCounterDataType,
    dwSize: ULONG,
    Reserved: ULONG,
}}
pub type PPERF_COUNTER_HEADER = *mut PERF_COUNTER_HEADER;
STRUCT!{struct PERF_MULTI_INSTANCES {
    dwTotalSize: ULONG,
    dwInstances: ULONG,
}}
pub type PPERF_MULTI_INSTANCES = *mut PERF_MULTI_INSTANCES;
STRUCT!{struct PERF_MULTI_COUNTERS {
    dwSize: ULONG,
    dwCounters: ULONG,
}}
pub type PPERF_MULTI_COUNTERS = *mut PERF_MULTI_COUNTERS;
STRUCT!{struct PERF_COUNTER_DATA {
    dwDataSize: ULONG,
    dwSize: ULONG,
}}
pub type PPERF_COUNTER_DATA = *mut PERF_COUNTER_DATA;
extern "system" {
    pub fn PerfEnumerateCounterSet(
        szMachine: LPCWSTR,
        pCounterSetIds: LPGUID,
        cCounterSetIds: DWORD,
        pcCounterSetIdsActual: LPDWORD,
    ) -> ULONG;
    pub fn PerfEnumerateCounterSetInstances(
        szMachine: LPCWSTR,
        pCounterSetIds: LPCGUID,
        pInstances: PPERF_INSTANCE_HEADER,
        cbInstances: DWORD,
        pcbInstancesActual: LPDWORD,
    ) -> ULONG;
    pub fn PerfQueryCounterSetRegistrationInfo(
        szMachine: LPCWSTR,
        pCounterSetId: LPCGUID,
        requestCode: PerfRegInfoType,
        requestLangId: DWORD,
        pbRegInfo: LPBYTE,
        cbRegInfo: DWORD,
        pcbRegInfoActual: LPDWORD,
    ) -> ULONG;
    pub fn PerfOpenQueryHandle(
        szMachine: LPCWSTR,
        hQuery: *mut HANDLE,
    ) -> ULONG;
    pub fn PerfCloseQueryHandle(
        hQuery: HANDLE,
    ) -> ULONG;
    pub fn PerfQueryCounterInfo(
        hQuery: HANDLE,
        pCounters: PPERF_COUNTER_IDENTIFIER,
        cbCounters: DWORD,
        pcbCountersActual: LPDWORD,
    ) -> ULONG;
    pub fn PerfQueryCounterData(
        hQuery: HANDLE,
        pCounterBlock: PPERF_DATA_HEADER,
        cbCounterBlock: DWORD,
        pcbCounterBlockActual: LPDWORD,
    ) -> ULONG;
    pub fn PerfAddCounters(
        hQuery: HANDLE,
        pCounters: PPERF_COUNTER_IDENTIFIER,
        cbCounters: DWORD,
    ) -> ULONG;
    pub fn PerfDeleteCounters(
        hQuery: HANDLE,
        pCounters: PPERF_COUNTER_IDENTIFIER,
        cbCounters: DWORD,
    ) -> ULONG;
}

[ 0.28Quellennavigators  Projekt   ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge