TESTENTRY_NO_REGISTER_DISPATCH = 2,
TESTENTRY_NO_REGISTER_UNLOAD = 4,
TESTENTRY_NO_EXCLUSIVE_DEVICE = 8,
+ TESTENTRY_NO_READONLY_DEVICE = 16,
+ TESTENTRY_BUFFERED_IO_DEVICE = 32,
} KMT_TESTENTRY_FLAGS;
NTSTATUS TestEntry(IN PDRIVER_OBJECT DriverObject, IN PCUNICODE_STRING RegistryPath, OUT PCWSTR *DeviceName, IN OUT INT *Flags);
BOOLEAN KmtAreInterruptsEnabled(VOID);
ULONG KmtGetPoolTag(PVOID Memory);
USHORT KmtGetPoolType(PVOID Memory);
+PVOID KmtGetSystemRoutineAddress(IN PCWSTR RoutineName);
PKTHREAD KmtStartThread(IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext OPTIONAL);
VOID KmtFinishThread(IN PKTHREAD Thread OPTIONAL, IN PKEVENT Event OPTIONAL);
#elif defined KMT_USER_MODE
ok_eq_hex(ExceptionStatus, (ExpectedStatus)); \
}
+#define KmtGetSystemOrEmbeddedRoutineAddress(RoutineName) \
+ p##RoutineName = KmtGetSystemRoutineAddress(L ## #RoutineName); \
+ if (!p##RoutineName) \
+ { \
+ p##RoutineName = RoutineName; \
+ trace("Using embedded routine for " #RoutineName "\n"); \
+ } \
+ else \
+ trace("Using system routine for " #RoutineName "\n");
+
#if defined KMT_DEFINE_TEST_FUNCTIONS
#if defined KMT_KERNEL_MODE