@@ -84,21 +84,103 @@ typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR {
8484#define RTL_VRF_DBG_ENTRYPOINT_CALLS 0x20000
8585
8686
87- // Verifier stop codes
88-
89- #define APPLICATION_VERIFIER_CORRUPT_HEAP_POINTER 0x0006
90- #define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007
91-
92- #define APPLICATION_VERIFIER_EXCEPTION_WHILE_VERIFYING_BLOCK_HEADER 0x000B
93- #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_AFTER_FREE 0x000D
94- #define APPLICATION_VERIFIER_CORRUPTED_INFIX_PATTERN 0x000E
95- #define APPLICATION_VERIFIER_CORRUPTED_SUFFIX_PATTERN 0x000F
96- #define APPLICATION_VERIFIER_CORRUPTED_START_STAMP 0x0010
97- #define APPLICATION_VERIFIER_CORRUPTED_END_STAMP 0x0011
98- #define APPLICATION_VERIFIER_CORRUPTED_PREFIX_PATTERN 0x0012
9987
100-
101- VOID NTAPI
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+
182+ VOID
183+ NTAPI
102184RtlApplicationVerifierStop (
103185 _In_ ULONG_PTR Code ,
104186 _In_ PCSTR Message ,
0 commit comments