ReactOS 0.4.16-dev-1093-g93e9710
verifier.h
Go to the documentation of this file.
1#ifndef REACTOS_VERIFIER_H
2#define REACTOS_VERIFIER_H
3
4#define DLL_PROCESS_VERIFIER 4
5
6typedef VOID (NTAPI* RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved);
7typedef VOID (NTAPI* RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved);
9
15
22
24 // Provider fields
29
30 // Verifier fields
37
38 // Provider field
41
42
43// VerifierFlags
44
45#define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001
46#define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002
47#define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004
48#define RTL_VRF_FLG_STACK_CHECKS 0x00000008
49#define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010
50#define RTL_VRF_FLG_TLS_CHECKS 0x00000020
51#define RTL_VRF_FLG_DIRTY_STACKS 0x00000040
52#define RTL_VRF_FLG_RPC_CHECKS 0x00000080
53#define RTL_VRF_FLG_COM_CHECKS 0x00000100
54#define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200
55#define RTL_VRF_FLG_RACE_CHECKS 0x00000400
56#define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800
57#define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000
58#define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000
59#define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000
60#define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000
61#define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000
62#define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000
63#define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000
64#define RTL_VRF_FLG_LOCK_CHECKS 0x00040000
65
66
67// VerifierDebug
68
69#define RTL_VRF_DBG_SHOWSNAPS 0x00001
70#define RTL_VRF_DBG_SHOWFOUNDEXPORTS 0x00002
71#define RTL_VRF_DBG_SHOWVERIFIEDEXPORTS 0x00004
72#define RTL_VRF_DBG_LISTPROVIDERS 0x00008
73#define RTL_VRF_DBG_SHOWCHAINING 0x00010
74#define RTL_VRF_DBG_SHOWCHAINING_DEBUG 0x00020
75
76#define RTL_VRF_DBG_CS_SPLAYTREE 0x00200
77#define RTL_VRF_DBG_CS_DUMP_SPLAYTREE 0x00400
78#define RTL_VRF_DBG_CS_CREATE_DELETE 0x00800
79
80#define RTL_VRF_DBG_VERIFIER_LOGCALLS 0x04000
81#define RTL_VRF_DBG_VERIFIER_SHOWDYNTHUNKS 0x08000
82
83#define RTL_VRF_DBG_ENTRYPOINT_HOOKS 0x10000
84#define RTL_VRF_DBG_ENTRYPOINT_CALLS 0x20000
85
86
87
88// Verifier stop codes
89#define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000
90#define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000
91#define APPLICATION_VERIFIER_NO_BREAK 0x20000000
92#define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000
93
94#define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001
95#define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002
96#define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003
97#define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004
98#define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005
99#define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006
100#define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007
101#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008
102#define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009
103#define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A
104#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B
105#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C
106#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D
107#define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E
108#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F
109#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010
110#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011
111#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012
112#define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013
113#define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014
114
115#define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100
116#define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101
117#define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102
118
119#define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200
120#define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201
121#define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202
122#define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203
123#define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204
124#define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205
125#define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206
126#define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207
127#define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208
128#define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209
129#define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210
130#define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211
131#define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212
132#define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213
133#define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214
134
135#define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300
136#define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301
137#define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302
138#define APPLICATION_VERIFIER_NULL_HANDLE 0x0303
139#define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304
140
141#define APPLICATION_VERIFIER_COM_ERROR 0x0400
142#define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401
143#define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402
144#define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403
145#define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404
146#define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405
147#define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406
148#define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407
149#define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408
150#define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409
151#define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A
152#define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B
153#define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C
154#define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D
155#define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E
156#define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F
157#define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410
158
159#define APPLICATION_VERIFIER_RPC_ERROR 0x0500
160
161#define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600
162#define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601
163#define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602
164#define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603
165#define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604
166#define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605
167#define APPLICATION_VERIFIER_PROBE_NULL 0x0606
168#define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607
169#define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618
170
171#define VERIFIER_STOP(Code, Msg, Val1, Desc1, Val2, Desc2, Val3, Desc3, Val4, Desc4) \
172 do { \
173 RtlApplicationVerifierStop((Code), \
174 (Msg), \
175 (Val1), (Desc1), \
176 (Val2), (Desc2), \
177 (Val3), (Desc3), \
178 (Val4), (Desc4)); \
179 } while (0)
180
181
182VOID
183NTAPI
187 _In_ PVOID Value1,
188 _In_ PCSTR Description1,
189 _In_ PVOID Value2,
190 _In_ PCSTR Description2,
191 _In_ PVOID Value3,
192 _In_ PCSTR Description3,
193 _In_ PVOID Value4,
194 _In_ PCSTR Description4);
195
196
197#endif // REACTOS_VERIFIER_H
#define VOID
Definition: acefi.h:82
static const WCHAR Message[]
Definition: register.c:74
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
Definition: fatprocs.h:323
unsigned long DWORD
Definition: ntddk_ex.h:95
#define _In_
Definition: no_sal2.h:158
PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks
Definition: verifier.h:20
RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback
Definition: verifier.h:27
RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback
Definition: verifier.h:39
PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls
Definition: verifier.h:26
RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback
Definition: verifier.h:28
uint16_t * PWSTR
Definition: typedefs.h:56
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
const char * PCSTR
Definition: typedefs.h:52
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint16_t * PWCHAR
Definition: typedefs.h:56
char * PCHAR
Definition: typedefs.h:51
VOID(NTAPI * RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase, SIZE_T AllocationSize)
Definition: verifier.h:8
struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR * PRTL_VERIFIER_PROVIDER_DESCRIPTOR
struct _RTL_VERIFIER_THUNK_DESCRIPTOR * PRTL_VERIFIER_THUNK_DESCRIPTOR
struct _RTL_VERIFIER_DLL_DESCRIPTOR * PRTL_VERIFIER_DLL_DESCRIPTOR
VOID(NTAPI * RTL_VERIFIER_DLL_UNLOAD_CALLBACK)(PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved)
Definition: verifier.h:7
struct _RTL_VERIFIER_DLL_DESCRIPTOR RTL_VERIFIER_DLL_DESCRIPTOR
VOID NTAPI RtlApplicationVerifierStop(_In_ ULONG_PTR Code, _In_ PCSTR Message, _In_ PVOID Value1, _In_ PCSTR Description1, _In_ PVOID Value2, _In_ PCSTR Description2, _In_ PVOID Value3, _In_ PCSTR Description3, _In_ PVOID Value4, _In_ PCSTR Description4)
Definition: appverifier.c:23
struct _RTL_VERIFIER_THUNK_DESCRIPTOR RTL_VERIFIER_THUNK_DESCRIPTOR
struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR RTL_VERIFIER_PROVIDER_DESCRIPTOR
VOID(NTAPI * RTL_VERIFIER_DLL_LOAD_CALLBACK)(PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved)
Definition: verifier.h:6
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
Definition: wdfdevice.h:1701
_Reserved_ PVOID Reserved
Definition: winddi.h:3974