1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 6 #include <winapifamily.h> 7 8 #ifndef _AVRFSDK_ 9 #define _AVRFSDK_ 10 11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #define AVRF_MAX_TRACES 32 18 19 enum eHeapAllocationState { 20 HeapFullPageHeap = 0x40000000, 21 HeapMetadata = 0x80000000, 22 HeapStateMask = 0xffff0000 23 }; 24 25 enum eHeapEnumerationLevel { 26 HeapEnumerationEverything = 0x0, 27 HeapEnumerationStop = 0xffffffff 28 }; 29 30 enum eHANDLE_TRACE_OPERATIONS { 31 OperationDbUnused, 32 OperationDbOPEN, 33 OperationDbCLOSE, 34 OperationDbBADREF 35 }; 36 37 enum eAvrfResourceTypes { 38 AvrfResourceHeapAllocation, 39 AvrfResourceHandleTrace, 40 AvrfResourceMax 41 }; 42 43 enum eUserAllocationState { 44 AllocationStateUnknown, 45 AllocationStateBusy, 46 AllocationStateFree 47 }; 48 49 typedef struct _AVRF_BACKTRACE_INFORMATION { 50 ULONG Depth; 51 ULONG Index; 52 ULONG64 ReturnAddresses[AVRF_MAX_TRACES]; 53 } AVRF_BACKTRACE_INFORMATION,*PAVRF_BACKTRACE_INFORMATION; 54 55 typedef struct _AVRF_HEAP_ALLOCATION { 56 ULONG64 HeapHandle; 57 ULONG64 UserAllocation; 58 ULONG64 UserAllocationSize; 59 ULONG64 Allocation; 60 ULONG64 AllocationSize; 61 ULONG UserAllocationState; 62 ULONG HeapState; 63 ULONG64 HeapContext; 64 PAVRF_BACKTRACE_INFORMATION BackTraceInformation; 65 } AVRF_HEAP_ALLOCATION,*PAVRF_HEAP_ALLOCATION; 66 67 typedef struct _AVRF_HANDLE_OPERATION { 68 ULONG64 Handle; 69 ULONG ProcessId; 70 ULONG ThreadId; 71 ULONG OperationType; 72 ULONG Spare0; 73 AVRF_BACKTRACE_INFORMATION BackTraceInformation; 74 } AVRF_HANDLE_OPERATION,*PAVRF_HANDLE_OPERATION; 75 76 typedef ULONG (NTAPI *AVRF_RESOURCE_ENUMERATE_CALLBACK) (PVOID ResourceDescription, PVOID EnumerationContext, PULONG EnumerationLevel); 77 typedef ULONG (NTAPI *AVRF_HEAPALLOCATION_ENUMERATE_CALLBACK) (PAVRF_HEAP_ALLOCATION HeapAllocation, PVOID EnumerationContext, PULONG EnumerationLevel); 78 typedef ULONG (NTAPI *AVRF_HANDLEOPERATION_ENUMERATE_CALLBACK) (PAVRF_HANDLE_OPERATION HandleOperation, PVOID EnumerationContext, PULONG EnumerationLevel); 79 80 #define AVRF_ENUM_RESOURCES_FLAGS_SUSPEND 0x0001 81 #define AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES 0x0002 82 83 ULONG NTAPI VerifierEnumerateResource (HANDLE Process, ULONG Flags, ULONG ResourceType, AVRF_RESOURCE_ENUMERATE_CALLBACK ResourceCallback, PVOID EnumerationContext); 84 WINBOOL NTAPI VerifierIsPerUserSettingsEnabled (VOID); 85 86 #ifdef __cplusplus 87 } 88 #endif 89 90 #endif 91 #endif 92