Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_PERFLIB
      7 #define _INC_PERFLIB
      8 #if (_WIN32_WINNT >= 0x0600)
      9 
     10 #ifdef __cplusplus
     11 extern "C" {
     12 #endif
     13 
     14 #ifndef WINADVAPI
     15 #ifndef _ADVAPI32_
     16 #define WINADVAPI DECLSPEC_IMPORT
     17 #else
     18 #define WINADVAPI
     19 #endif
     20 #endif
     21 
     22 typedef LPVOID (CALLBACK *PERF_MEM_ALLOC)(SIZE_T AllocSize,LPVOID pContext);
     23 typedef ULONG (WINAPI *PERFLIBREQUEST)(ULONG RequestCode,PVOID Buffer,ULONG BufferSize);
     24 typedef void (CALLBACK *PERF_MEM_FREE)(LPVOID pBuffer,LPVOID pContext);
     25 
     26 typedef struct _PERF_PROVIDER_CONTEXT {
     27   DWORD          ContextSize;
     28   DWORD          Reserved;
     29   PERFLIBREQUEST ControlCallback;
     30   PERF_MEM_ALLOC MemAllocRoutine;
     31   PERF_MEM_FREE  MemFreeRoutine;
     32   LPVOID         pMemContext;
     33 } PERF_PROVIDER_CONTEXT, *PPERF_PROVIDER_CONTEXT;
     34 
     35 typedef struct _PERF_COUNTER_IDENTITY {
     36   GUID  CounterSetGuid;
     37   ULONG BufferSize;
     38   ULONG CounterId;
     39   ULONG InstanceId;
     40   ULONG MachineOffset;
     41   ULONG NameOffset;
     42   ULONG Reserved;
     43 } PERF_COUNTER_IDENTITY, *PPERF_COUNTER_IDENTITY;
     44 
     45 typedef struct _PERF_COUNTER_INFO {
     46   ULONG     CounterId;
     47   ULONG     Type;
     48   ULONGLONG Attrib;
     49   ULONG     Size;
     50   ULONG     DetailLevel;
     51   LONG      Scale;
     52   ULONG     Offset;
     53 } PERF_COUNTER_INFO, *PPERF_COUNTER_INFO;
     54 
     55 typedef struct _PERF_COUNTERSET_INFO {
     56   GUID  CounterSetGuid;
     57   GUID  ProviderGuid;
     58   ULONG NumCounters;
     59   ULONG InstanceType;
     60 } PERF_COUNTERSET_INFO, *PPERF_COUNTERSET_INFO;
     61 
     62 typedef struct _PERF_COUNTERSET_INSTANCE {
     63   GUID  CounterSetGuid;
     64   ULONG dwSize;
     65   ULONG InstanceId;
     66   ULONG InstanceNameOffset;
     67   ULONG InstanceNameSize;
     68 } PERF_COUNTERSET_INSTANCE, *PPERF_COUNTERSET_INSTANCE;
     69 
     70 WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfCreateInstance(
     71   HANDLE hProvider,
     72   LPCGUID CounterSetGuid,
     73   LPCWSTR szInstanceName,
     74   ULONG dwInstance
     75 );
     76 
     77 WINADVAPI ULONG WINAPI PerfDecrementULongCounterValue(
     78   HANDLE hProvider,
     79   PPERF_COUNTERSET_INSTANCE pInstance,
     80   ULONG CounterId,
     81   ULONG lValue
     82 );
     83 
     84 WINADVAPI ULONG WINAPI PerfDecrementULongLongCounterValue(
     85   HANDLE hProvider,
     86   PPERF_COUNTERSET_INSTANCE pInstance,
     87   ULONG CounterId,
     88   ULONGLONG llValue
     89 );
     90 
     91 WINADVAPI ULONG WINAPI PerfDeleteInstance(
     92   HANDLE hProvider,
     93   PPERF_COUNTERSET_INSTANCE InstanceBlock
     94 );
     95 
     96 WINADVAPI ULONG WINAPI PerfIncrementULongCounterValue(
     97   HANDLE hProvider,
     98   PPERF_COUNTERSET_INSTANCE pInstance,
     99   ULONG CounterId,
    100   ULONG lValue
    101 );
    102 
    103 WINADVAPI ULONG WINAPI PerfIncrementULongLongCounterValue(
    104   HANDLE hProvider,
    105   PPERF_COUNTERSET_INSTANCE pInstance,
    106   ULONG CounterId,
    107   ULONGLONG llValue
    108 );
    109 
    110 WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfQueryInstance(
    111   HANDLE hProvider,
    112   LPCGUID CounterSetGuid,
    113   LPCWSTR szInstance,
    114   ULONG dwInstance
    115 );
    116 
    117 WINADVAPI ULONG WINAPI PerfSetCounterRefValue(
    118   HANDLE hProvider,
    119   PPERF_COUNTERSET_INSTANCE pInstance,
    120   ULONG CounterId,
    121   PVOID lpAddr
    122 );
    123 
    124 WINADVAPI ULONG WINAPI PerfSetCounterSetInfo(
    125   HANDLE hProvider,
    126   PPERF_COUNTERSET_INFO pTemplate,
    127   ULONG dwTemplateSize
    128 );
    129 
    130 WINADVAPI ULONG WINAPI PerfSetULongCounterValue(
    131   HANDLE hProvider,
    132   PPERF_COUNTERSET_INSTANCE pInstance,
    133   ULONG CounterId,
    134   ULONG lValue
    135 );
    136 
    137 WINADVAPI ULONG WINAPI PerfSetULongLongCounterValue(
    138   HANDLE hProvider,
    139   PPERF_COUNTERSET_INSTANCE pInstance,
    140   ULONG CounterId,
    141   ULONGLONG llValue
    142 );
    143 
    144 WINADVAPI ULONG WINAPI PerfStartProvider(
    145   LPGUID ProviderGuid,
    146   PERFLIBREQUEST ControlCallback,
    147   HANDLE *phProvider
    148 );
    149 
    150 WINADVAPI ULONG WINAPI PerfStartProviderEx(
    151   LPGUID ProviderGuid,
    152   PPERF_PROVIDER_CONTEXT ProviderContext,
    153   HANDLE *phProvider
    154 );
    155 
    156 WINADVAPI ULONG WINAPI PerfStopProvider(
    157   HANDLE hProvider
    158 );
    159 
    160 #ifdef __cplusplus
    161 }
    162 #endif
    163 
    164 #endif /*(_WIN32_WINNT >= 0x0600)*/
    165 #endif /*_INC_PERFLIB*/
    166