master
  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
 11extern "C" {
 12#endif
 13
 14#include <apisetcconv.h>
 15
 16typedef LPVOID (CALLBACK *PERF_MEM_ALLOC)(SIZE_T AllocSize,LPVOID pContext);
 17typedef ULONG (WINAPI *PERFLIBREQUEST)(ULONG RequestCode,PVOID Buffer,ULONG BufferSize);
 18typedef void (CALLBACK *PERF_MEM_FREE)(LPVOID pBuffer,LPVOID pContext);
 19
 20typedef 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
 29typedef 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
 39typedef 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
 49typedef struct _PERF_COUNTERSET_INFO {
 50  GUID  CounterSetGuid;
 51  GUID  ProviderGuid;
 52  ULONG NumCounters;
 53  ULONG InstanceType;
 54} PERF_COUNTERSET_INFO, *PPERF_COUNTERSET_INFO;
 55
 56typedef 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
 64WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfCreateInstance(
 65  HANDLE hProvider,
 66  LPCGUID CounterSetGuid,
 67  LPCWSTR szInstanceName,
 68  ULONG dwInstance
 69);
 70
 71WINADVAPI ULONG WINAPI PerfDecrementULongCounterValue(
 72  HANDLE hProvider,
 73  PPERF_COUNTERSET_INSTANCE pInstance,
 74  ULONG CounterId,
 75  ULONG lValue
 76);
 77
 78WINADVAPI ULONG WINAPI PerfDecrementULongLongCounterValue(
 79  HANDLE hProvider,
 80  PPERF_COUNTERSET_INSTANCE pInstance,
 81  ULONG CounterId,
 82  ULONGLONG llValue
 83);
 84
 85WINADVAPI ULONG WINAPI PerfDeleteInstance(
 86  HANDLE hProvider,
 87  PPERF_COUNTERSET_INSTANCE InstanceBlock
 88);
 89
 90WINADVAPI ULONG WINAPI PerfIncrementULongCounterValue(
 91  HANDLE hProvider,
 92  PPERF_COUNTERSET_INSTANCE pInstance,
 93  ULONG CounterId,
 94  ULONG lValue
 95);
 96
 97WINADVAPI ULONG WINAPI PerfIncrementULongLongCounterValue(
 98  HANDLE hProvider,
 99  PPERF_COUNTERSET_INSTANCE pInstance,
100  ULONG CounterId,
101  ULONGLONG llValue
102);
103
104WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfQueryInstance(
105  HANDLE hProvider,
106  LPCGUID CounterSetGuid,
107  LPCWSTR szInstance,
108  ULONG dwInstance
109);
110
111WINADVAPI ULONG WINAPI PerfSetCounterRefValue(
112  HANDLE hProvider,
113  PPERF_COUNTERSET_INSTANCE pInstance,
114  ULONG CounterId,
115  PVOID lpAddr
116);
117
118WINADVAPI ULONG WINAPI PerfSetCounterSetInfo(
119  HANDLE hProvider,
120  PPERF_COUNTERSET_INFO pTemplate,
121  ULONG dwTemplateSize
122);
123
124WINADVAPI ULONG WINAPI PerfSetULongCounterValue(
125  HANDLE hProvider,
126  PPERF_COUNTERSET_INSTANCE pInstance,
127  ULONG CounterId,
128  ULONG lValue
129);
130
131WINADVAPI ULONG WINAPI PerfSetULongLongCounterValue(
132  HANDLE hProvider,
133  PPERF_COUNTERSET_INSTANCE pInstance,
134  ULONG CounterId,
135  ULONGLONG llValue
136);
137
138WINADVAPI ULONG WINAPI PerfStartProvider(
139  LPGUID ProviderGuid,
140  PERFLIBREQUEST ControlCallback,
141  HANDLE *phProvider
142);
143
144WINADVAPI ULONG WINAPI PerfStartProviderEx(
145  LPGUID ProviderGuid,
146  PPERF_PROVIDER_CONTEXT ProviderContext,
147  HANDLE *phProvider
148);
149
150WINADVAPI ULONG WINAPI PerfStopProvider(
151  HANDLE hProvider
152);
153
154#ifdef __cplusplus
155}
156#endif
157
158#endif /*(_WIN32_WINNT >= 0x0600)*/
159#endif /*_INC_PERFLIB*/