/** * 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 _AVRFSDK_ #define _AVRFSDK_ #ifdef __cplusplus extern "C" { #endif #define AVRF_MAX_TRACES 32 typedef struct _AVRF_BACKTRACE_INFORMATION { ULONG Depth; ULONG Index; ULONG64 ReturnAddresses[AVRF_MAX_TRACES]; } AVRF_BACKTRACE_INFORMATION, *PAVRF_BACKTRACE_INFORMATION; enum eUserAllocationState { AllocationStateUnknown, AllocationStateBusy, AllocationStateFree }; enum eHeapAllocationState { HeapFullPageHeap = 0x40000000, HeapMetadata = 0x80000000, HeapStateMask = 0xffff0000, }; enum eHeapEnumerationLevel { HeapEnumerationEverything = 0, HeapEnumerationStop = 0xffffffff, }; typedef struct _AVRF_HEAP_ALLOCATION { ULONG64 HeapHandle; ULONG64 UserAllocation; ULONG64 UserAllocationSize; ULONG64 Allocation; ULONG64 AllocationSize; ULONG UserAllocationState; ULONG HeapState; ULONG64 HeapContext; PAVRF_BACKTRACE_INFORMATION BackTraceInformation; } AVRF_HEAP_ALLOCATION, *PAVRF_HEAP_ALLOCATION; enum eHANDLE_TRACE_OPERATIONS { OperationDbUnused, OperationDbOPEN, OperationDbCLOSE, OperationDbBADREF }; typedef struct _AVRF_HANDLE_OPERATION { ULONG64 Handle; ULONG ProcessId; ULONG ThreadId; ULONG OperationType; ULONG Spare0; AVRF_BACKTRACE_INFORMATION BackTraceInformation; } AVRF_HANDLE_OPERATION, *PAVRF_HANDLE_OPERATION; enum eAvrfResourceTypes { AvrfResourceHeapAllocation, AvrfResourceHandleTrace, AvrfResourceMax }; typedef ULONG (NTAPI *AVRF_RESOURCE_ENUMERATE_CALLBACK)(void*,void*,ULONG*); typedef ULONG (NTAPI *AVRF_HEAPALLOCATION_ENUMERATE_CALLBACK)(AVRF_HEAP_ALLOCATION,void*,ULONG*); typedef ULONG (NTAPI *AVRF_HANDLEOPERATION_ENUMERATE_CALLBACK)(AVRF_HANDLE_OPERATION*,void*,ULONG*); #define AVRF_ENUM_RESOURCES_FLAGS_SUSPEND 0x0001 #define AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES 0x0002 ULONG NTAPI VerifierEnumerateResource(HANDLE,ULONG,ULONG,AVRF_RESOURCE_ENUMERATE_CALLBACK,void*); BOOL NTAPI VerifierIsPerUserSettingsEnabled(void); #ifdef __cplusplus } #endif #endif /* _AVRFSDK_ */