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);
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);
goto cleanup;
}
+ if (Flags & TESTENTRY_BUFFERED_IO_DEVICE)
+ TestDeviceObject->Flags |= DO_BUFFERED_IO;
+
DPRINT("DriverEntry. Created DeviceObject %p\n",
TestDeviceObject);
}