From c57a3c88a0c03e3a720c8ee5bff4679d6719c021 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sun, 26 May 2013 17:18:19 +0000 Subject: [PATCH] [USBSTOR] - Hackplement IRP_MJ_POWER support - Inspired by Thomas (Blame him ;)) svn path=/trunk/; revision=59084 --- reactos/drivers/usb/usbstor/usbstor.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) 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; + } }