Hello Alex,
On 8/1/19 11:20 PM, Alex Henrie wrote:
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))
Is the application really calling this function from a user-mode process? If not, I think this test should go in driver.c, instead, somewhere around main_test(). I suspect that will also get rid of the missing function workaround.
ἔρρωσο, Zeb