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
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
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
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