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 #include <apisetcconv.h>
     15 
     16 typedef LPVOID (CALLBACK *PERF_MEM_ALLOC)(SIZE_T AllocSize,LPVOID pContext);
     17 typedef ULONG (WINAPI *PERFLIBREQUEST)(ULONG RequestCode,PVOID Buffer,ULONG BufferSize);
     18 typedef void (CALLBACK *PERF_MEM_FREE)(LPVOID pBuffer,LPVOID pContext);
     19 
     20 typedef struct _PERF_PROVIDER_CONTEXT {
     21   DWORD          ContextSize;
     22   DWORD          Reserved;
     23   PERFLIBREQUEST ControlCallback;
     24   PERF_MEM_ALLOC MemAllocRoutine;
     25   PERF_MEM_FREE  MemFreeRoutine;
     26   LPVOID         pMemContext;
     27 } PERF_PROVIDER_CONTEXT, *PPERF_PROVIDER_CONTEXT;
     28 
     29 typedef struct _PERF_COUNTER_IDENTITY {
     30   GUID  CounterSetGuid;
     31   ULONG BufferSize;
     32   ULONG CounterId;
     33   ULONG InstanceId;
     34   ULONG MachineOffset;
     35   ULONG NameOffset;
     36   ULONG Reserved;
     37 } PERF_COUNTER_IDENTITY, *PPERF_COUNTER_IDENTITY;
     38 
     39 typedef struct _PERF_COUNTER_INFO {
     40   ULONG     CounterId;
     41   ULONG     Type;
     42   ULONGLONG Attrib;
     43   ULONG     Size;
     44   ULONG     DetailLevel;
     45   LONG      Scale;
     46   ULONG     Offset;
     47 } PERF_COUNTER_INFO, *PPERF_COUNTER_INFO;
     48 
     49 typedef struct _PERF_COUNTERSET_INFO {
     50   GUID  CounterSetGuid;
     51   GUID  ProviderGuid;
     52   ULONG NumCounters;
     53   ULONG InstanceType;
     54 } PERF_COUNTERSET_INFO, *PPERF_COUNTERSET_INFO;
     55 
     56 typedef struct _PERF_COUNTERSET_INSTANCE {
     57   GUID  CounterSetGuid;
     58   ULONG dwSize;
     59   ULONG InstanceId;
     60   ULONG InstanceNameOffset;
     61   ULONG InstanceNameSize;
     62 } PERF_COUNTERSET_INSTANCE, *PPERF_COUNTERSET_INSTANCE;
     63 
     64 WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfCreateInstance(
     65   HANDLE hProvider,
     66   LPCGUID CounterSetGuid,
     67   LPCWSTR szInstanceName,
     68   ULONG dwInstance
     69 );
     70 
     71 WINADVAPI ULONG WINAPI PerfDecrementULongCounterValue(
     72   HANDLE hProvider,
     73   PPERF_COUNTERSET_INSTANCE pInstance,
     74   ULONG CounterId,
     75   ULONG lValue
     76 );
     77 
     78 WINADVAPI ULONG WINAPI PerfDecrementULongLongCounterValue(
     79   HANDLE hProvider,
     80   PPERF_COUNTERSET_INSTANCE pInstance,
     81   ULONG CounterId,
     82   ULONGLONG llValue
     83 );
     84 
     85 WINADVAPI ULONG WINAPI PerfDeleteInstance(
     86   HANDLE hProvider,
     87   PPERF_COUNTERSET_INSTANCE InstanceBlock
     88 );
     89 
     90 WINADVAPI ULONG WINAPI PerfIncrementULongCounterValue(
     91   HANDLE hProvider,
     92   PPERF_COUNTERSET_INSTANCE pInstance,
     93   ULONG CounterId,
     94   ULONG lValue
     95 );
     96 
     97 WINADVAPI ULONG WINAPI PerfIncrementULongLongCounterValue(
     98   HANDLE hProvider,
     99   PPERF_COUNTERSET_INSTANCE pInstance,
    100   ULONG CounterId,
    101   ULONGLONG llValue
    102 );
    103 
    104 WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfQueryInstance(
    105   HANDLE hProvider,
    106   LPCGUID CounterSetGuid,
    107   LPCWSTR szInstance,
    108   ULONG dwInstance
    109 );
    110 
    111 WINADVAPI ULONG WINAPI PerfSetCounterRefValue(
    112   HANDLE hProvider,
    113   PPERF_COUNTERSET_INSTANCE pInstance,
    114   ULONG CounterId,
    115   PVOID lpAddr
    116 );
    117 
    118 WINADVAPI ULONG WINAPI PerfSetCounterSetInfo(
    119   HANDLE hProvider,
    120   PPERF_COUNTERSET_INFO pTemplate,
    121   ULONG dwTemplateSize
    122 );
    123 
    124 WINADVAPI ULONG WINAPI PerfSetULongCounterValue(
    125   HANDLE hProvider,
    126   PPERF_COUNTERSET_INSTANCE pInstance,
    127   ULONG CounterId,
    128   ULONG lValue
    129 );
    130 
    131 WINADVAPI ULONG WINAPI PerfSetULongLongCounterValue(
    132   HANDLE hProvider,
    133   PPERF_COUNTERSET_INSTANCE pInstance,
    134   ULONG CounterId,
    135   ULONGLONG llValue
    136 );
    137 
    138 WINADVAPI ULONG WINAPI PerfStartProvider(
    139   LPGUID ProviderGuid,
    140   PERFLIBREQUEST ControlCallback,
    141   HANDLE *phProvider
    142 );
    143 
    144 WINADVAPI ULONG WINAPI PerfStartProviderEx(
    145   LPGUID ProviderGuid,
    146   PPERF_PROVIDER_CONTEXT ProviderContext,
    147   HANDLE *phProvider
    148 );
    149 
    150 WINADVAPI ULONG WINAPI PerfStopProvider(
    151   HANDLE hProvider
    152 );
    153 
    154 #ifdef __cplusplus
    155 }
    156 #endif
    157 
    158 #endif /*(_WIN32_WINNT >= 0x0600)*/
    159 #endif /*_INC_PERFLIB*/
    160