|  | /** | 
|  | * 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 | 
|  |  | 
|  | #include <apisetcconv.h> | 
|  |  | 
|  | 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*/ |