/** * 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 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*/