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 #ifndef WINADVAPI 15 #ifndef _ADVAPI32_ 16 #define WINADVAPI DECLSPEC_IMPORT 17 #else 18 #define WINADVAPI 19 #endif 20 #endif 21 22 typedef LPVOID (CALLBACK *PERF_MEM_ALLOC)(SIZE_T AllocSize,LPVOID pContext); 23 typedef ULONG (WINAPI *PERFLIBREQUEST)(ULONG RequestCode,PVOID Buffer,ULONG BufferSize); 24 typedef void (CALLBACK *PERF_MEM_FREE)(LPVOID pBuffer,LPVOID pContext); 25 26 typedef struct _PERF_PROVIDER_CONTEXT { 27 DWORD ContextSize; 28 DWORD Reserved; 29 PERFLIBREQUEST ControlCallback; 30 PERF_MEM_ALLOC MemAllocRoutine; 31 PERF_MEM_FREE MemFreeRoutine; 32 LPVOID pMemContext; 33 } PERF_PROVIDER_CONTEXT, *PPERF_PROVIDER_CONTEXT; 34 35 typedef struct _PERF_COUNTER_IDENTITY { 36 GUID CounterSetGuid; 37 ULONG BufferSize; 38 ULONG CounterId; 39 ULONG InstanceId; 40 ULONG MachineOffset; 41 ULONG NameOffset; 42 ULONG Reserved; 43 } PERF_COUNTER_IDENTITY, *PPERF_COUNTER_IDENTITY; 44 45 typedef struct _PERF_COUNTER_INFO { 46 ULONG CounterId; 47 ULONG Type; 48 ULONGLONG Attrib; 49 ULONG Size; 50 ULONG DetailLevel; 51 LONG Scale; 52 ULONG Offset; 53 } PERF_COUNTER_INFO, *PPERF_COUNTER_INFO; 54 55 typedef struct _PERF_COUNTERSET_INFO { 56 GUID CounterSetGuid; 57 GUID ProviderGuid; 58 ULONG NumCounters; 59 ULONG InstanceType; 60 } PERF_COUNTERSET_INFO, *PPERF_COUNTERSET_INFO; 61 62 typedef struct _PERF_COUNTERSET_INSTANCE { 63 GUID CounterSetGuid; 64 ULONG dwSize; 65 ULONG InstanceId; 66 ULONG InstanceNameOffset; 67 ULONG InstanceNameSize; 68 } PERF_COUNTERSET_INSTANCE, *PPERF_COUNTERSET_INSTANCE; 69 70 WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfCreateInstance( 71 HANDLE hProvider, 72 LPCGUID CounterSetGuid, 73 LPCWSTR szInstanceName, 74 ULONG dwInstance 75 ); 76 77 WINADVAPI ULONG WINAPI PerfDecrementULongCounterValue( 78 HANDLE hProvider, 79 PPERF_COUNTERSET_INSTANCE pInstance, 80 ULONG CounterId, 81 ULONG lValue 82 ); 83 84 WINADVAPI ULONG WINAPI PerfDecrementULongLongCounterValue( 85 HANDLE hProvider, 86 PPERF_COUNTERSET_INSTANCE pInstance, 87 ULONG CounterId, 88 ULONGLONG llValue 89 ); 90 91 WINADVAPI ULONG WINAPI PerfDeleteInstance( 92 HANDLE hProvider, 93 PPERF_COUNTERSET_INSTANCE InstanceBlock 94 ); 95 96 WINADVAPI ULONG WINAPI PerfIncrementULongCounterValue( 97 HANDLE hProvider, 98 PPERF_COUNTERSET_INSTANCE pInstance, 99 ULONG CounterId, 100 ULONG lValue 101 ); 102 103 WINADVAPI ULONG WINAPI PerfIncrementULongLongCounterValue( 104 HANDLE hProvider, 105 PPERF_COUNTERSET_INSTANCE pInstance, 106 ULONG CounterId, 107 ULONGLONG llValue 108 ); 109 110 WINADVAPI PPERF_COUNTERSET_INSTANCE WINAPI PerfQueryInstance( 111 HANDLE hProvider, 112 LPCGUID CounterSetGuid, 113 LPCWSTR szInstance, 114 ULONG dwInstance 115 ); 116 117 WINADVAPI ULONG WINAPI PerfSetCounterRefValue( 118 HANDLE hProvider, 119 PPERF_COUNTERSET_INSTANCE pInstance, 120 ULONG CounterId, 121 PVOID lpAddr 122 ); 123 124 WINADVAPI ULONG WINAPI PerfSetCounterSetInfo( 125 HANDLE hProvider, 126 PPERF_COUNTERSET_INFO pTemplate, 127 ULONG dwTemplateSize 128 ); 129 130 WINADVAPI ULONG WINAPI PerfSetULongCounterValue( 131 HANDLE hProvider, 132 PPERF_COUNTERSET_INSTANCE pInstance, 133 ULONG CounterId, 134 ULONG lValue 135 ); 136 137 WINADVAPI ULONG WINAPI PerfSetULongLongCounterValue( 138 HANDLE hProvider, 139 PPERF_COUNTERSET_INSTANCE pInstance, 140 ULONG CounterId, 141 ULONGLONG llValue 142 ); 143 144 WINADVAPI ULONG WINAPI PerfStartProvider( 145 LPGUID ProviderGuid, 146 PERFLIBREQUEST ControlCallback, 147 HANDLE *phProvider 148 ); 149 150 WINADVAPI ULONG WINAPI PerfStartProviderEx( 151 LPGUID ProviderGuid, 152 PPERF_PROVIDER_CONTEXT ProviderContext, 153 HANDLE *phProvider 154 ); 155 156 WINADVAPI ULONG WINAPI PerfStopProvider( 157 HANDLE hProvider 158 ); 159 160 #ifdef __cplusplus 161 } 162 #endif 163 164 #endif /*(_WIN32_WINNT >= 0x0600)*/ 165 #endif /*_INC_PERFLIB*/ 166