view semicongine/thirdparty/winim/winim/inc/winperf.nim @ 1333:966032c7a3aa

did: formatting
author sam <sam@basx.dev>
date Thu, 22 Aug 2024 18:32:21 +0700
parents 4cf9872f7bb6
children
line wrap: on
line source

#====================================================================
#
#          Winim - Windows API, COM, and CLR Module for Nim
#               Copyright (c) Chen Kai-Hung, Ward
#
#====================================================================
import winimbase
import windef
import winbase
#include <winperf.h>
type
  PERF_DATA_BLOCK* {.pure.} = object
    Signature*: array[4, WCHAR]
    LittleEndian*: DWORD
    Version*: DWORD
    Revision*: DWORD
    TotalByteLength*: DWORD
    HeaderLength*: DWORD
    NumObjectTypes*: DWORD
    DefaultObject*: LONG
    SystemTime*: SYSTEMTIME
    padding*: array[4, byte]
    PerfTime*: LARGE_INTEGER
    PerfFreq*: LARGE_INTEGER
    PerfTime100nSec*: LARGE_INTEGER
    SystemNameLength*: DWORD
    SystemNameOffset*: DWORD

  PPERF_DATA_BLOCK* = ptr PERF_DATA_BLOCK

when winimCpu64:
  type PERF_OBJECT_TYPE* {.pure.} = object
    TotalByteLength*: DWORD
    DefinitionLength*: DWORD
    HeaderLength*: DWORD
    ObjectNameTitleIndex*: DWORD
    ObjectNameTitle*: DWORD
    ObjectHelpTitleIndex*: DWORD
    ObjectHelpTitle*: DWORD
    DetailLevel*: DWORD
    NumCounters*: DWORD
    DefaultCounter*: LONG
    NumInstances*: LONG
    CodePage*: DWORD
    PerfTime*: LARGE_INTEGER
    PerfFreq*: LARGE_INTEGER

when winimCpu32:
  type PERF_OBJECT_TYPE* {.pure.} = object
    TotalByteLength*: DWORD
    DefinitionLength*: DWORD
    HeaderLength*: DWORD
    ObjectNameTitleIndex*: DWORD
    ObjectNameTitle*: LPWSTR
    ObjectHelpTitleIndex*: DWORD
    ObjectHelpTitle*: LPWSTR
    DetailLevel*: DWORD
    NumCounters*: DWORD
    DefaultCounter*: LONG
    NumInstances*: LONG
    CodePage*: DWORD
    PerfTime*: LARGE_INTEGER
    PerfFreq*: LARGE_INTEGER

type PPERF_OBJECT_TYPE* = ptr PERF_OBJECT_TYPE
when winimCpu64:
  type PERF_COUNTER_DEFINITION* {.pure.} = object
    ByteLength*: DWORD
    CounterNameTitleIndex*: DWORD
    CounterNameTitle*: DWORD
    CounterHelpTitleIndex*: DWORD
    CounterHelpTitle*: DWORD
    DefaultScale*: LONG
    DetailLevel*: DWORD
    CounterType*: DWORD
    CounterSize*: DWORD
    CounterOffset*: DWORD

when winimCpu32:
  type PERF_COUNTER_DEFINITION* {.pure.} = object
    ByteLength*: DWORD
    CounterNameTitleIndex*: DWORD
    CounterNameTitle*: LPWSTR
    CounterHelpTitleIndex*: DWORD
    CounterHelpTitle*: LPWSTR
    DefaultScale*: LONG
    DetailLevel*: DWORD
    CounterType*: DWORD
    CounterSize*: DWORD
    CounterOffset*: DWORD

type
  PPERF_COUNTER_DEFINITION* = ptr PERF_COUNTER_DEFINITION
  PERF_INSTANCE_DEFINITION* {.pure.} = object
    ByteLength*: DWORD
    ParentObjectTitleIndex*: DWORD
    ParentObjectInstance*: DWORD
    UniqueID*: LONG
    NameOffset*: DWORD
    NameLength*: DWORD

  PPERF_INSTANCE_DEFINITION* = ptr PERF_INSTANCE_DEFINITION
  PERF_COUNTER_BLOCK* {.pure.} = object
    ByteLength*: DWORD

  PPERF_COUNTER_BLOCK* = ptr PERF_COUNTER_BLOCK

const
  PERF_DATA_VERSION* = 1
  PERF_DATA_REVISION* = 1
  PERF_NO_INSTANCES* = -1
  PERF_SIZE_DWORD* = 0x00000000
  PERF_SIZE_LARGE* = 0x00000100
  PERF_SIZE_ZERO* = 0x00000200
  PERF_SIZE_VARIABLE_LEN* = 0x00000300
  PERF_TYPE_NUMBER* = 0x00000000
  PERF_TYPE_COUNTER* = 0x00000400
  PERF_TYPE_TEXT* = 0x00000800
  PERF_TYPE_ZERO* = 0x00000C00
  PERF_NUMBER_HEX* = 0x00000000
  PERF_NUMBER_DECIMAL* = 0x00010000
  PERF_NUMBER_DEC_1000* = 0x00020000
  PERF_COUNTER_VALUE* = 0x00000000
  PERF_COUNTER_RATE* = 0x00010000
  PERF_COUNTER_FRACTION* = 0x00020000
  PERF_COUNTER_BASE* = 0x00030000
  PERF_COUNTER_ELAPSED* = 0x00040000
  PERF_COUNTER_QUEUELEN* = 0x00050000
  PERF_COUNTER_HISTOGRAM* = 0x00060000
  PERF_COUNTER_PRECISION* = 0x00070000
  PERF_TEXT_UNICODE* = 0x00000000
  PERF_TEXT_ASCII* = 0x00010000
  PERF_TIMER_TICK* = 0x00000000
  PERF_TIMER_100NS* = 0x00100000
  PERF_OBJECT_TIMER* = 0x00200000
  PERF_DELTA_COUNTER* = 0x00400000
  PERF_DELTA_BASE* = 0x00800000
  PERF_INVERSE_COUNTER* = 0x01000000
  PERF_MULTI_COUNTER* = 0x02000000
  PERF_DISPLAY_NO_SUFFIX* = 0x00000000
  PERF_DISPLAY_PER_SEC* = 0x10000000
  PERF_DISPLAY_PERCENT* = 0x20000000
  PERF_DISPLAY_SECONDS* = 0x30000000
  PERF_DISPLAY_NOSHOW* = 0x40000000
  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_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_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_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_100NS_QUEUELEN_TYPE* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_100NS or
    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
  PERF_COUNTER_OBJ_TIME_QUEUELEN_TYPE* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_OBJECT_TIMER or
    PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX
  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_TEXT* =
    PERF_SIZE_VARIABLE_LEN or PERF_TYPE_TEXT or PERF_TEXT_UNICODE or
    PERF_DISPLAY_NO_SUFFIX
  PERF_COUNTER_RAWCOUNT* =
    PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_DECIMAL 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_RAWCOUNT_HEX* =
    PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_HEX 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_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_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_COUNTER_NODATA* = PERF_SIZE_ZERO or PERF_DISPLAY_NOSHOW
  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_SAMPLE_BASE* =
    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or
    0x00000001
  PERF_AVERAGE_TIMER* =
    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_SECONDS
  PERF_AVERAGE_BASE* =
    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or
    0x00000002
  PERF_AVERAGE_BULK* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_NOSHOW
  PERF_OBJ_TIME_TIMER* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_OBJECT_TIMER or
    PERF_DELTA_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_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_MULTI_BASE* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_MULTI_COUNTER or
    PERF_DISPLAY_NOSHOW
  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_RAW_FRACTION* =
    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT
  PERF_LARGE_RAW_FRACTION* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT
  PERF_RAW_BASE* =
    PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or
    0x00000003
  PERF_LARGE_RAW_BASE* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW
  PERF_ELAPSED_TIME* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_ELAPSED or PERF_OBJECT_TIMER or
    PERF_DISPLAY_SECONDS
  PERF_COUNTER_HISTOGRAM_TYPE* = 0x80000000'i32
  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_LARGE_DELTA* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_VALUE or PERF_DELTA_COUNTER or
    PERF_DISPLAY_NO_SUFFIX
  PERF_PRECISION_SYSTEM_TIMER* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_TIMER_TICK or
    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
  PERF_PRECISION_100NS_TIMER* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_TIMER_100NS or
    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
  PERF_PRECISION_OBJECT_TIMER* =
    PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_PRECISION or PERF_OBJECT_TIMER or
    PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT
  PERF_PRECISION_TIMESTAMP* = PERF_LARGE_RAW_BASE
  PERF_DETAIL_NOVICE* = 100
  PERF_DETAIL_ADVANCED* = 200
  PERF_DETAIL_EXPERT* = 300
  PERF_DETAIL_WIZARD* = 400
  PERF_NO_UNIQUE_ID* = -1
  PERF_QUERY_OBJECTS* = LONG 0x80000000'i32
  PERF_QUERY_GLOBAL* = LONG 0x80000001'i32
  PERF_QUERY_COSTLY* = LONG 0x80000002'i32
  MAX_PERF_OBJECTS_IN_QUERY_FUNCTION* = 64
  WINPERF_LOG_NONE* = 0
  WINPERF_LOG_USER* = 1
  WINPERF_LOG_DEBUG* = 2
  WINPERF_LOG_VERBOSE* = 3
type
  PM_OPEN_PROC* = proc(P1: LPWSTR): DWORD {.stdcall.}
  PM_COLLECT_PROC* =
    proc(P1: LPWSTR, P2: ptr LPVOID, P3: LPDWORD, P4: LPDWORD): DWORD {.stdcall.}
  PM_CLOSE_PROC* = proc(): DWORD {.stdcall.}
  PM_QUERY_PROC* =
    proc(P1: LPDWORD, P2: ptr LPVOID, P3: LPDWORD, P4: LPDWORD): DWORD {.stdcall.}