[KMTESTS]
[reactos.git] / kmtests / ntos_io / IoHelper_drv.c
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 <thfabba@gmx.de>
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
24 PAGED_CODE();
25
26 UNREFERENCED_PARAMETER(DriverObject);
27 UNREFERENCED_PARAMETER(RegistryPath);
28 UNREFERENCED_PARAMETER(Flags);
29
30 *DeviceName = L"IoHelper";
31
32 KmtRegisterIrpHandler(IRP_MJ_CREATE, NULL, TestIrpHandler);
33 KmtRegisterIrpHandler(IRP_MJ_CLOSE, NULL, TestIrpHandler);
34
35 return Status;
36 }
37
38 VOID
39 TestUnload(
40 IN PDRIVER_OBJECT DriverObject)
41 {
42 PAGED_CODE();
43
44 UNREFERENCED_PARAMETER(DriverObject);
45 }
46
47 static
48 NTSTATUS
49 TestIrpHandler(
50 IN PDEVICE_OBJECT DeviceObject,
51 IN PIRP Irp,
52 IN PIO_STACK_LOCATION IoStackLocation)
53 {
54 NTSTATUS Status = STATUS_SUCCESS;
55
56 if (IoStackLocation->MajorFunction == IRP_MJ_CREATE)
57 DPRINT("Helper Driver: Create Device %p", DeviceObject);
58 else if (IoStackLocation->MajorFunction == IRP_MJ_CLOSE)
59 DPRINT("Helper Driver: Close Device %p", DeviceObject);
60
61 Irp->IoStatus.Status = Status;
62 Irp->IoStatus.Information = 0;
63
64 IoCompleteRequest(Irp, IO_NO_INCREMENT);
65
66 return Status;
67 }