diff --git a/reactos/drivers/usb/usbstor/usbstor.c b/reactos/drivers/usb/usbstor/usbstor.c index fb7f70f3884..44daca0666a 100644 --- a/reactos/drivers/usb/usbstor/usbstor.c +++ b/reactos/drivers/usb/usbstor/usbstor.c @@ -212,12 +212,24 @@ USBSTOR_DispatchPower( PDEVICE_OBJECT DeviceObject, PIRP Irp) { - UNIMPLEMENTED + PFDO_DEVICE_EXTENSION DeviceExtension; - Irp->IoStatus.Information = 0; - Irp->IoStatus.Status = STATUS_SUCCESS; - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return STATUS_SUCCESS; + // get common device extension + DeviceExtension = (PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + + if (DeviceExtension->Common.IsFDO) + { + PoStartNextPowerIrp(Irp); + IoSkipCurrentIrpStackLocation(Irp); + return PoCallDriver(DeviceExtension->LowerDeviceObject, Irp); + } + else + { + PoStartNextPowerIrp(Irp); + Irp->IoStatus.Status = STATUS_SUCCESS; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_SUCCESS; + } }