Zebediah Figura : ntoskrnl/tests: Keep the test output file open for the entire duration each driver is loaded.

Alexandre Julliard julliard at winehq.org
Wed Apr 7 15:48:29 CDT 2021


Module: wine
Branch: master
Commit: e3ca290a4c0302da35c70e655ee7d38a33f7c871
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e3ca290a4c0302da35c70e655ee7d38a33f7c871

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Apr  6 22:42:25 2021 -0500

ntoskrnl/tests: Keep the test output file open for the entire duration each driver is loaded.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/tests/driver.c       | 53 +++++++++++++---------------------
 dlls/ntoskrnl.exe/tests/driver_netio.c | 24 +++++++--------
 dlls/ntoskrnl.exe/tests/ntoskrnl.c     |  6 ++--
 3 files changed, 35 insertions(+), 48 deletions(-)

diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 6d46314216b..0d991cd98d6 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -1781,8 +1781,6 @@ static void WINAPI main_test_task(DEVICE_OBJECT *device, void *context)
     test_stack_limits();
     test_completion();
 
-    winetest_cleanup();
-
     irp->IoStatus.Status = STATUS_SUCCESS;
     irp->IoStatus.Information = 0;
     IoCompleteRequest(irp, IO_NO_INCREMENT);
@@ -2104,15 +2102,11 @@ static void test_permanence(void)
 static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack)
 {
     void *buffer = irp->AssociatedIrp.SystemBuffer;
-    struct main_test_input *test_input = (struct main_test_input *)buffer;
-    NTSTATUS status;
+    struct main_test_input *test_input = buffer;
 
     if (!buffer)
         return STATUS_ACCESS_VIOLATION;
 
-    if ((status = winetest_init()))
-        return status;
-
     pExEventObjectType = get_proc_address("ExEventObjectType");
     ok(!!pExEventObjectType, "ExEventObjectType not found\n");
 
@@ -2520,6 +2514,8 @@ static VOID WINAPI driver_Unload(DRIVER_OBJECT *driver)
 
     IoDeleteDevice(upper_device);
     IoDeleteDevice(lower_device);
+
+    winetest_cleanup();
 }
 
 NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
@@ -2528,6 +2524,9 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
     NTSTATUS status;
     void *obj;
 
+    if ((status = winetest_init()))
+        return status;
+
     DbgPrint("loading driver\n");
 
     driver_obj = driver;
@@ -2547,38 +2546,26 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
     pIoDriverObjectType = MmGetSystemRoutineAddress(&nameW);
 
     RtlInitUnicodeString(&nameW, L"\\Driver\\WineTestDriver");
-    if ((status = ObReferenceObjectByName(&nameW, 0, NULL, 0, *pIoDriverObjectType, KernelMode, NULL, &obj)))
-        return status;
-    if (obj != driver)
-    {
-        ObDereferenceObject(obj);
-        return STATUS_UNSUCCESSFUL;
-    }
+    status = ObReferenceObjectByName(&nameW, 0, NULL, 0, *pIoDriverObjectType, KernelMode, NULL, &obj);
+    ok(!status, "got %#x\n", status);
+    ok(obj == driver, "expected %p, got %p\n", driver, obj);
     ObDereferenceObject(obj);
 
     RtlInitUnicodeString(&nameW, L"\\Device\\WineTestDriver");
     RtlInitUnicodeString(&linkW, L"\\DosDevices\\WineTestDriver");
 
-    if (!(status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN,
-                                  FILE_DEVICE_SECURE_OPEN, FALSE, &lower_device)))
-    {
-        status = IoCreateSymbolicLink(&linkW, &nameW);
-        lower_device->Flags &= ~DO_DEVICE_INITIALIZING;
-    }
-
-    if (!status)
-    {
-        RtlInitUnicodeString(&nameW, L"\\Device\\WineTestUpper");
+    status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &lower_device);
+    ok(!status, "failed to create device, status %#x\n", status);
+    status = IoCreateSymbolicLink(&linkW, &nameW);
+    ok(!status, "failed to create link, status %#x\n", status);
+    lower_device->Flags &= ~DO_DEVICE_INITIALIZING;
 
-        status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN,
-                                FILE_DEVICE_SECURE_OPEN, FALSE, &upper_device);
-    }
+    RtlInitUnicodeString(&nameW, L"\\Device\\WineTestUpper");
+    status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &upper_device);
+    ok(!status, "failed to create device, status %#x\n", status);
 
-    if (!status)
-    {
-        IoAttachDeviceToDeviceStack(upper_device, lower_device);
-        upper_device->Flags &= ~DO_DEVICE_INITIALIZING;
-    }
+    IoAttachDeviceToDeviceStack(upper_device, lower_device);
+    upper_device->Flags &= ~DO_DEVICE_INITIALIZING;
 
-    return status;
+    return STATUS_SUCCESS;
 }
diff --git a/dlls/ntoskrnl.exe/tests/driver_netio.c b/dlls/ntoskrnl.exe/tests/driver_netio.c
index ec8161d2424..ea9cfd1a4c5 100644
--- a/dlls/ntoskrnl.exe/tests/driver_netio.c
+++ b/dlls/ntoskrnl.exe/tests/driver_netio.c
@@ -466,21 +466,15 @@ static void test_wsk_connect_socket(void)
 static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack)
 {
     void *buffer = irp->AssociatedIrp.SystemBuffer;
-    NTSTATUS status;
 
     if (!buffer)
         return STATUS_ACCESS_VIOLATION;
 
-    if ((status = winetest_init()))
-        return status;
-
     netio_init();
     test_wsk_get_address_info();
     test_wsk_listen_socket();
     test_wsk_connect_socket();
 
-    winetest_cleanup();
-
     irp->IoStatus.Information = 0;
     return STATUS_SUCCESS;
 }
@@ -533,6 +527,8 @@ static VOID WINAPI driver_unload(DRIVER_OBJECT *driver)
     IoDeleteSymbolicLink(&linkW);
 
     IoDeleteDevice(device_obj);
+
+    winetest_cleanup();
 }
 
 NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
@@ -540,6 +536,9 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
     UNICODE_STRING nameW, linkW;
     NTSTATUS status;
 
+    if ((status = winetest_init()))
+        return status;
+
     DbgPrint("Loading driver.\n");
 
     driver_obj = driver;
@@ -552,12 +551,11 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
     RtlInitUnicodeString(&nameW, device_name);
     RtlInitUnicodeString(&linkW, driver_link);
 
-    if (!(status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN,
-            FILE_DEVICE_SECURE_OPEN, FALSE, &device_obj)))
-    {
-        status = IoCreateSymbolicLink(&linkW, &nameW);
-        device_obj->Flags &= ~DO_DEVICE_INITIALIZING;
-    }
+    status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, FALSE, &device_obj);
+    ok(!status, "failed to create device, status %#x\n", status);
+    status = IoCreateSymbolicLink(&linkW, &nameW);
+    ok(!status, "failed to create link, status %#x\n", status);
+    device_obj->Flags &= ~DO_DEVICE_INITIALIZING;
 
-    return status;
+    return STATUS_SUCCESS;
 }
diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
index 4f7afed171c..4981709034c 100644
--- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
@@ -405,8 +405,6 @@ static void main_test(void)
     ok(res, "DeviceIoControl failed: %u\n", GetLastError());
     ok(!size, "got size %u\n", size);
 
-    cat_okfile();
-
     heap_free(test_input);
 }
 
@@ -931,6 +929,8 @@ static void test_driver_netio(struct testsign_context *ctx)
     unload_driver(service);
     ret = DeleteFileW(filename);
     ok(ret, "DeleteFile failed: %u\n", GetLastError());
+
+    cat_okfile();
 }
 
 static void add_file_to_catalog(HANDLE catalog, const WCHAR *file)
@@ -1272,6 +1272,8 @@ START_TEST(ntoskrnl)
     ret = DeleteFileW(filename2);
     ok(ret, "DeleteFile failed: %u\n", GetLastError());
 
+    cat_okfile();
+
     test_driver3(&ctx);
     subtest("driver_netio");
     test_driver_netio(&ctx);




More information about the wine-cvs mailing list