/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_PERFLIB
#define _INC_PERFLIB
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
#ifndef WINADVAPI
#ifndef _ADVAPI32_
#define WINADVAPI DECLSPEC_IMPORT
#else
#define WINADVAPI
#endif
#endif
typedef LPVOID (CALLBACK *PERF_MEM_ALLOC)(SIZE_T AllocSize,LPVOID pContext);
typedef ULONG (WINAPI *PERFLIBREQUEST)(ULONG RequestCode,PVOID Buffer,ULONG BufferSize);
typedef void (CALLBACK *PERF_MEM_FREE)(LPVOID pBuffer,LPVOID pContext);
typedef struct _PERF_PROVIDER_CONTEXT {
DWORD ContextSize;
DWORD Reserved;
PERFLIBREQUEST ControlCallback;
PERF_MEM_ALLOC MemAllocRoutine;
PERF_MEM_FREE MemFreeRoutine;
LPVOID pMemContext;
} PERF_PROVIDER_CONTEXT, *PPERF_PROVIDER_CONTEXT;
typedef struct _PERF_COUNTER_IDENTITY {
GUID CounterSetGuid;
ULONG BufferSize;
ULONG CounterId;
ULONG InstanceId;
ULONG MachineOffset;
ULONG NameOffset;
ULONG Reserved;
} PERF_COUNTER_IDENTITY, *PPERF_COUNTER_IDENTITY;
typedef struct _PERF_COUNTER_INFO {
ULONG CounterId;
ULONG Type;
ULONGLONG Attrib;
ULONG Size;
ULONG DetailLevel;
LONG Scale;
ULONG Offset;
} PERF_COUNTER_INFO, *PPERF_COUNTER_INFO;
typedef struct _PERF_COUNTERSET_INFO {
GUID CounterSetGuid;
GUID ProviderGuid;
ULONG NumCounters;
ULONG InstanceType;
} PERF_COUNTERSET_INFO, *PPERF_COUNTERSET_INFO;
typedef struct _PERF_COUNTERSET_INSTANCE {
GUID CounterSetGuid;
ULONG dwSize;
ULONG InstanceId;
ULONG InstanceNameOffset;
ULONG InstanceNameSize;
} PERF_COUNTERSET_INSTANCE, *PPERF_COUNTERSET_INSTANCE;
WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfCreateInstance(
HANDLE hProvider,
LPCGUID CounterSetGuid,
LPCWSTR szInstanceName,
ULONG dwInstance
);
WINADVAPI ULONG WINAPI PerfDecrementULongCounterValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
ULONG lValue
);
WINADVAPI ULONG WINAPI PerfDecrementULongLongCounterValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
ULONGLONG llValue
);
WINADVAPI ULONG WINAPI PerfDeleteInstance(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE InstanceBlock
);
WINADVAPI ULONG WINAPI PerfIncrementULongCounterValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
ULONG lValue
);
WINADVAPI ULONG WINAPI PerfIncrementULongLongCounterValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
ULONGLONG llValue
);
WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfQueryInstance(
HANDLE hProvider,
LPCGUID CounterSetGuid,
LPCWSTR szInstance,
ULONG dwInstance
);
WINADVAPI ULONG WINAPI PerfSetCounterRefValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
PVOID lpAddr
);
WINADVAPI ULONG WINAPI PerfSetCounterSetInfo(
HANDLE hProvider,
PPERF_COUNTERSET_INFO pTemplate,
ULONG dwTemplateSize
);
WINADVAPI ULONG WINAPI PerfSetULongCounterValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
ULONG lValue
);
WINADVAPI ULONG WINAPI PerfSetULongLongCounterValue(
HANDLE hProvider,
PPERF_COUNTERSET_INSTANCE pInstance,
ULONG CounterId,
ULONGLONG llValue
);
WINADVAPI ULONG WINAPI PerfStartProvider(
LPGUID ProviderGuid,
PERFLIBREQUEST ControlCallback,
HANDLE *phProvider
);
WINADVAPI ULONG WINAPI PerfStartProviderEx(
LPGUID ProviderGuid,
PPERF_PROVIDER_CONTEXT ProviderContext,
HANDLE *phProvider
);
WINADVAPI ULONG WINAPI PerfStopProvider(
HANDLE hProvider
);
#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_PERFLIB*/