https://git.reactos.org/?p=reactos.git;a=commitdiff;h=84d7db2c574382b5d6385…
commit 84d7db2c574382b5d63859a9670cd0c5633f241a
Author: Mark Jansen <mark.jansen(a)reactos.org>
AuthorDate: Fri Apr 27 00:05:06 2018 +0200
Commit: Mark Jansen <mark.jansen(a)reactos.org>
CommitDate: Sat May 12 13:34:36 2018 +0200
[SDK] Add initial verifier header.
---
sdk/include/reactos/verifier.h | 86 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
diff --git a/sdk/include/reactos/verifier.h b/sdk/include/reactos/verifier.h
new file mode 100644
index 0000000000..b0e8413d15
--- /dev/null
+++ b/sdk/include/reactos/verifier.h
@@ -0,0 +1,86 @@
+#ifndef REACTOS_VERIFIER_H
+#define REACTOS_VERIFIER_H
+
+#define DLL_PROCESS_VERIFIER 4
+
+typedef VOID (NTAPI* RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName, PVOID DllBase,
SIZE_T DllSize, PVOID Reserved);
+typedef VOID (NTAPI* RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName, PVOID DllBase,
SIZE_T DllSize, PVOID Reserved);
+typedef VOID (NTAPI* RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK) (PVOID AllocationBase, SIZE_T
AllocationSize);
+
+typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR {
+ PCHAR ThunkName;
+ PVOID ThunkOldAddress;
+ PVOID ThunkNewAddress;
+} RTL_VERIFIER_THUNK_DESCRIPTOR, *PRTL_VERIFIER_THUNK_DESCRIPTOR;
+
+typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR {
+ PWCHAR DllName;
+ DWORD DllFlags;
+ PVOID DllAddress;
+ PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks;
+} RTL_VERIFIER_DLL_DESCRIPTOR, *PRTL_VERIFIER_DLL_DESCRIPTOR;
+
+typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR {
+ // Provider fields
+ DWORD Length;
+ PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls;
+ RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback;
+ RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback;
+
+ // Verifier fields
+ PWSTR VerifierImage;
+ DWORD VerifierFlags;
+ DWORD VerifierDebug;
+ PVOID RtlpGetStackTraceAddress;
+ PVOID RtlpDebugPageHeapCreate;
+ PVOID RtlpDebugPageHeapDestroy;
+
+ // Provider field
+ RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback;
+} RTL_VERIFIER_PROVIDER_DESCRIPTOR, *PRTL_VERIFIER_PROVIDER_DESCRIPTOR;
+
+
+// VerifierFlags
+
+#define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001
+#define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002
+#define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004
+#define RTL_VRF_FLG_STACK_CHECKS 0x00000008
+#define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010
+#define RTL_VRF_FLG_TLS_CHECKS 0x00000020
+#define RTL_VRF_FLG_DIRTY_STACKS 0x00000040
+#define RTL_VRF_FLG_RPC_CHECKS 0x00000080
+#define RTL_VRF_FLG_COM_CHECKS 0x00000100
+#define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200
+#define RTL_VRF_FLG_RACE_CHECKS 0x00000400
+#define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800
+#define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000
+#define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000
+#define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000
+#define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000
+#define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000
+#define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000
+#define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000
+#define RTL_VRF_FLG_LOCK_CHECKS 0x00040000
+
+
+// VerifierDebug
+
+#define RTL_VRF_DBG_SHOWSNAPS 0x00001
+#define RTL_VRF_DBG_SHOWFOUNDEXPORTS 0x00002
+#define RTL_VRF_DBG_SHOWVERIFIEDEXPORTS 0x00004
+#define RTL_VRF_DBG_LISTPROVIDERS 0x00008
+#define RTL_VRF_DBG_SHOWCHAINING 0x00010
+#define RTL_VRF_DBG_SHOWCHAINING_DEBUG 0x00020
+
+#define RTL_VRF_DBG_CS_SPLAYTREE 0x00200
+#define RTL_VRF_DBG_CS_DUMP_SPLAYTREE 0x00400
+#define RTL_VRF_DBG_CS_CREATE_DELETE 0x00800
+
+#define RTL_VRF_DBG_VERIFIER_LOGCALLS 0x04000
+#define RTL_VRF_DBG_VERIFIER_SHOWDYNTHUNKS 0x08000
+
+#define RTL_VRF_DBG_ENTRYPOINT_HOOKS 0x10000
+#define RTL_VRF_DBG_ENTRYPOINT_CALLS 0x20000
+
+#endif // REACTOS_VERIFIER_H