[COMCTL32_APITEST} -Add some more tests and fix build.
[reactos.git] / rostests / kmtests / kmtest_drv / kmtest_standalone.c
index cf4ced3..2ca8512 100644 (file)
@@ -121,7 +121,8 @@ DriverEntry(
         RtlAppendUnicodeToString(&DeviceName, DeviceNameSuffix);
         Status = IoCreateDevice(DriverObject, 0, &DeviceName,
                                 FILE_DEVICE_UNKNOWN,
-                                FILE_DEVICE_SECURE_OPEN | FILE_READ_ONLY_DEVICE,
+                                FILE_DEVICE_SECURE_OPEN |
+                                    (Flags & TESTENTRY_NO_READONLY_DEVICE ? 0 : FILE_READ_ONLY_DEVICE),
                                 Flags & TESTENTRY_NO_EXCLUSIVE_DEVICE ? FALSE : TRUE,
                                 &TestDeviceObject);
 
@@ -131,6 +132,9 @@ DriverEntry(
             goto cleanup;
         }
 
+        if (Flags & TESTENTRY_BUFFERED_IO_DEVICE)
+            TestDeviceObject->Flags |= DO_BUFFERED_IO;
+
         DPRINT("DriverEntry. Created DeviceObject %p\n",
                  TestDeviceObject);
     }
@@ -302,12 +306,10 @@ DriverDispatch(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp)
 {
-    NTSTATUS Status = STATUS_SUCCESS;
+    NTSTATUS Status = STATUS_INVALID_DEVICE_REQUEST;
     PIO_STACK_LOCATION IoStackLocation;
     int i;
 
-    PAGED_CODE();
-
     IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
 
     DPRINT("DriverDispatch: Function=%s, Device=%p\n",
@@ -327,6 +329,12 @@ DriverDispatch(
             IoStackLocation->MajorFunction == IRP_MJ_INTERNAL_DEVICE_CONTROL)
         return DeviceControlHandler(DeviceObject, Irp, IoStackLocation);
 
+    /* Return success for create, close, and cleanup */
+    if (IoStackLocation->MajorFunction == IRP_MJ_CREATE ||
+            IoStackLocation->MajorFunction == IRP_MJ_CLOSE ||
+            IoStackLocation->MajorFunction == IRP_MJ_CLEANUP)
+        Status = STATUS_SUCCESS;
+
     /* default handler */
     Irp->IoStatus.Status = Status;
     Irp->IoStatus.Information = 0;