Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47578 Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- MSDN says that this function has been deprecated since Windows XP, so it's not surprising that it always returns FALSE on the test VMs. --- dlls/ntoskrnl.exe/ntoskrnl.c | 7 +++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- dlls/ntoskrnl.exe/tests/ntoskrnl.c | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 92f9afab33..7ff5ab9cb9 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2971,6 +2971,13 @@ PVOID WINAPI MmGetSystemRoutineAddress(PUNICODE_STRING SystemRoutineName) return pFunc; }
+/*********************************************************************** + * MmIsThisAnNtAsSystem (NTOSKRNL.EXE.@) + */ +BOOLEAN WINAPI MmIsThisAnNtAsSystem(void) +{ + return FALSE; +}
/*********************************************************************** * MmQuerySystemSize (NTOSKRNL.EXE.@) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 439cae3097..6f4bd88538 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -699,7 +699,7 @@ @ stub MmIsDriverVerifying @ stub MmIsNonPagedSystemAddressValid @ stub MmIsRecursiveIoFault -@ stub MmIsThisAnNtAsSystem +@ stdcall MmIsThisAnNtAsSystem() @ stub MmIsVerifierEnabled @ stub MmLockPagableDataSection @ stub MmLockPagableImageSection diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index 48ddb299cf..5c04ee313c 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -32,11 +32,20 @@
static HANDLE device;
+static BOOLEAN (WINAPI *pMmIsThisAnNtAsSystem)(void); static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(const WCHAR *, UNICODE_STRING *, WCHAR **, CURDIR *); static BOOL (WINAPI *pRtlFreeUnicodeString)(UNICODE_STRING *); static BOOL (WINAPI *pCancelIoEx)(HANDLE, OVERLAPPED *); static BOOL (WINAPI *pSetFileCompletionNotificationModes)(HANDLE, UCHAR);
+static void test_system(void) +{ + if (!pMmIsThisAnNtAsSystem) /* 32-bit XP/7/8 */ + skip("MmIsThisAnNtAsSystem is not available\n"); + else + ok(!pMmIsThisAnNtAsSystem(), "System reports that it is an old NT Server\n"); +} + static void load_resource(const char *name, char *filename) { static char path[MAX_PATH]; @@ -347,12 +356,15 @@ START_TEST(ntoskrnl) BOOL ret;
HMODULE hntdll = GetModuleHandleA("ntdll.dll"); + pMmIsThisAnNtAsSystem = (void *)GetProcAddress(GetModuleHandleA("ntoskrnl.exe"), "MmIsThisAnNtAsSystem"); pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(hntdll, "RtlDosPathNameToNtPathName_U"); pRtlFreeUnicodeString = (void *)GetProcAddress(hntdll, "RtlFreeUnicodeString"); pCancelIoEx = (void *)GetProcAddress(GetModuleHandleA("kernel32.dll"), "CancelIoEx"); pSetFileCompletionNotificationModes = (void *)GetProcAddress(GetModuleHandleA("kernel32.dll"), "SetFileCompletionNotificationModes");
+ test_system(); + if (!(service = load_driver(filename, "driver.dll", "WineTestDriver"))) return; if (!start_driver(service))