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