master
 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
14extern "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