Home | History | Annotate | Download | only in include
      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