2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Serial enumerator driver
4 * FILE: drivers/bus/serenum/serenum.c
5 * PURPOSE: Serial enumerator driver entry point
7 * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com)
14 static NTSTATUS STDCALL
16 IN PDEVICE_OBJECT DeviceObject
,
19 if (((PCOMMON_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
)->IsFDO
)
20 return SerenumFdoPnp(DeviceObject
, Irp
);
22 return SerenumPdoPnp(DeviceObject
, Irp
);
26 DriverUnload(IN PDRIVER_OBJECT DriverObject
)
28 // nothing to do here yet
31 static NTSTATUS STDCALL
33 IN PDEVICE_OBJECT DeviceObject
,
36 NTSTATUS Status
= STATUS_NOT_SUPPORTED
;
38 if (((PCOMMON_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
)->IsFDO
)
40 /* Forward some IRPs to lower device */
41 switch (IoGetCurrentIrpStackLocation(Irp
)->MajorFunction
)
48 case IRP_MJ_DEVICE_CONTROL
:
49 return ForwardIrpToLowerDeviceAndForget(DeviceObject
, Irp
);
52 DPRINT1("Serenum: FDO stub for major function 0x%lx\n",
53 IoGetCurrentIrpStackLocation(Irp
)->MajorFunction
);
57 Status
= Irp
->IoStatus
.Status
;
63 /* Forward some IRPs to attached FDO */
64 switch (IoGetCurrentIrpStackLocation(Irp
)->MajorFunction
)
71 case IRP_MJ_DEVICE_CONTROL
:
72 return ForwardIrpToAttachedFdoAndForget(DeviceObject
, Irp
);
75 DPRINT1("Serenum: PDO stub for major function 0x%lx\n",
76 IoGetCurrentIrpStackLocation(Irp
)->MajorFunction
);
80 Status
= Irp
->IoStatus
.Status
;
85 Irp
->IoStatus
.Status
= Status
;
86 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
91 * Standard DriverEntry method.
95 IN PDRIVER_OBJECT DriverObject
,
96 IN PUNICODE_STRING RegPath
)
100 DriverObject
->DriverUnload
= DriverUnload
;
101 DriverObject
->DriverExtension
->AddDevice
= SerenumAddDevice
;
103 for (i
= 0; i
< IRP_MJ_MAXIMUM_FUNCTION
; i
++)
104 DriverObject
->MajorFunction
[i
] = IrpStub
;
106 //DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = SerialQueryInformation;
107 DriverObject
->MajorFunction
[IRP_MJ_PNP
] = SerenumPnp
;
108 //DriverObject->MajorFunction[IRP_MJ_POWER] = SerialPower;
110 return STATUS_SUCCESS
;