2 * PROJECT: ReactOS Universal Serial Bus Bulk Storage Driver
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: drivers/usb/usbstor/usbstor.c
5 * PURPOSE: USB block storage device driver.
10 /* INCLUDES ******************************************************************/
16 /* PUBLIC AND PRIVATE FUNCTIONS **********************************************/
19 IrpStub(IN PDEVICE_OBJECT DeviceObject
,
22 NTSTATUS Status
= STATUS_NOT_SUPPORTED
;
23 Irp
->IoStatus
.Status
= Status
;
24 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
29 AddDevice(IN PDRIVER_OBJECT DriverObject
,
30 IN PDEVICE_OBJECT pdo
)
32 return STATUS_SUCCESS
;
36 DriverUnload(PDRIVER_OBJECT DriverObject
)
41 StartIo(PUSBSTOR_DEVICE_EXTENSION DeviceExtension
,
47 DispatchClose(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
49 Irp
->IoStatus
.Information
= 0;
50 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
51 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
52 return STATUS_SUCCESS
;
56 DispatchCleanup(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
58 return STATUS_SUCCESS
;
62 DispatchDeviceControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
64 return STATUS_SUCCESS
;
69 DispatchScsi(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
71 return STATUS_SUCCESS
;
75 DispatchReadWrite(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
77 return STATUS_SUCCESS
;
81 DispatchSystemControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
83 return STATUS_SUCCESS
;
87 DispatchPnp(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
89 return STATUS_SUCCESS
;
93 DispatchPower(PDEVICE_OBJECT fido
, PIRP Irp
)
95 DPRINT1("USBSTOR: IRP_MJ_POWER unimplemented\n");
96 Irp
->IoStatus
.Information
= 0;
97 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
98 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
99 return STATUS_SUCCESS
;
105 * Standard DriverEntry method.
108 DriverEntry(IN PDRIVER_OBJECT DriverObject
, IN PUNICODE_STRING RegPath
)
112 DPRINT("********* USB Storage *********\n");
114 DriverObject
->DriverUnload
= DriverUnload
;
115 DriverObject
->DriverExtension
->AddDevice
= AddDevice
;
117 for (i
= 0; i
<= IRP_MJ_MAXIMUM_FUNCTION
; i
++)
118 DriverObject
->MajorFunction
[i
] = IrpStub
;
120 DriverObject
->DriverStartIo
= (PVOID
)StartIo
;
122 DriverObject
->MajorFunction
[IRP_MJ_CREATE
] = DispatchClose
;
123 DriverObject
->MajorFunction
[IRP_MJ_CLOSE
] = DispatchClose
;
124 DriverObject
->MajorFunction
[IRP_MJ_CLEANUP
] = DispatchCleanup
;
125 DriverObject
->MajorFunction
[IRP_MJ_DEVICE_CONTROL
] = DispatchDeviceControl
;
126 DriverObject
->MajorFunction
[IRP_MJ_READ
] = DispatchReadWrite
;
127 DriverObject
->MajorFunction
[IRP_MJ_WRITE
] = DispatchReadWrite
;
129 /* Scsi Miniport support */
130 DriverObject
->MajorFunction
[IRP_MJ_SCSI
] = DispatchScsi
;
131 DriverObject
->MajorFunction
[IRP_MJ_SYSTEM_CONTROL
] = DispatchSystemControl
;
133 DriverObject
->MajorFunction
[IRP_MJ_PNP
] = DispatchPnp
;
134 DriverObject
->MajorFunction
[IRP_MJ_POWER
] = DispatchPower
;
136 return STATUS_SUCCESS
;