1 /*
2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Kernel-Mode Test Suite I/O Test Helper driver
5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
6 */
7
8 #include <kmt_test.h>
9
10 //#define NDEBUG
11 #include <debug.h>
12
13 static KMT_IRP_HANDLER TestIrpHandler;
14
15 NTSTATUS
TestEntry(IN PDRIVER_OBJECT DriverObject,IN PCUNICODE_STRING RegistryPath,OUT PCWSTR * DeviceName,IN OUT INT * Flags)16 TestEntry(
17 IN PDRIVER_OBJECT DriverObject,
18 IN PCUNICODE_STRING RegistryPath,
19 OUT PCWSTR *DeviceName,
20 IN OUT INT *Flags)
21 {
22 NTSTATUS Status = STATUS_SUCCESS;
23 INT i;
24
25 PAGED_CODE();
26
27 UNREFERENCED_PARAMETER(DriverObject);
28 UNREFERENCED_PARAMETER(RegistryPath);
29 UNREFERENCED_PARAMETER(Flags);
30
31 DPRINT("TestEntry. DriverObject=%p, RegistryPath=%wZ\n", DriverObject, RegistryPath);
32
33 *DeviceName = L"IoHelper";
34
35 for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; ++i)
36 KmtRegisterIrpHandler(i, NULL, TestIrpHandler);
37
38 return Status;
39 }
40
41 VOID
TestUnload(IN PDRIVER_OBJECT DriverObject)42 TestUnload(
43 IN PDRIVER_OBJECT DriverObject)
44 {
45 PAGED_CODE();
46
47 UNREFERENCED_PARAMETER(DriverObject);
48
49 DPRINT("TestUnload. DriverObject=%p\n", DriverObject);
50 }
51
52 static
53 NTSTATUS
TestIrpHandler(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp,IN PIO_STACK_LOCATION IoStackLocation)54 TestIrpHandler(
55 IN PDEVICE_OBJECT DeviceObject,
56 IN PIRP Irp,
57 IN PIO_STACK_LOCATION IoStackLocation)
58 {
59 NTSTATUS Status = STATUS_SUCCESS;
60
61 DPRINT("TestIrpHandler. Function=%s, DeviceObject=%p\n",
62 KmtMajorFunctionNames[IoStackLocation->MajorFunction],
63 DeviceObject);
64
65 Irp->IoStatus.Status = Status;
66 Irp->IoStatus.Information = 0;
67
68 IoCompleteRequest(Irp, IO_NO_INCREMENT);
69
70 return Status;
71 }
72