Author: tfaber Date: Sun Sep 6 14:32:22 2015 New Revision: 69054
URL: http://svn.reactos.org/svn/reactos?rev=69054&view=rev Log: [KBDCLASS][MOUCLASS] - Forward power IRPs to lower devices. Failing IRP_MN_SET_POWER is illegal! CORE-10117
Modified: trunk/reactos/drivers/input/kbdclass/kbdclass.c trunk/reactos/drivers/input/mouclass/mouclass.c
Modified: trunk/reactos/drivers/input/kbdclass/kbdclass.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/kbdclass/kbdc... ============================================================================== --- trunk/reactos/drivers/input/kbdclass/kbdclass.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/kbdclass/kbdclass.c [iso-8859-1] Sun Sep 6 14:32:22 2015 @@ -193,15 +193,18 @@ IN PIRP Irp) { NTSTATUS Status = STATUS_NOT_SUPPORTED; - - if (!((PCOMMON_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsClassDO) + PPORT_DEVICE_EXTENSION DeviceExtension; + + DeviceExtension = DeviceObject->DeviceExtension; + if (!DeviceExtension->Common.IsClassDO) { /* Forward some IRPs to lower device */ switch (IoGetCurrentIrpStackLocation(Irp)->MajorFunction) { - case IRP_MJ_PNP: - case IRP_MJ_INTERNAL_DEVICE_CONTROL: - return ForwardIrpAndForget(DeviceObject, Irp); + case IRP_MJ_POWER: + PoStartNextPowerIrp(Irp); + IoSkipCurrentIrpStackLocation(Irp); + return PoCallDriver(DeviceExtension->LowerDevice, Irp); default: { ERR_(CLASS_NAME, "Port DO stub for major function 0x%lx\n",
Modified: trunk/reactos/drivers/input/mouclass/mouclass.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/mouclass/mouc... ============================================================================== --- trunk/reactos/drivers/input/mouclass/mouclass.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/mouclass/mouclass.c [iso-8859-1] Sun Sep 6 14:32:22 2015 @@ -170,15 +170,18 @@ IN PIRP Irp) { NTSTATUS Status = STATUS_NOT_SUPPORTED; - - if (!((PCOMMON_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsClassDO) + PPORT_DEVICE_EXTENSION DeviceExtension; + + DeviceExtension = DeviceObject->DeviceExtension; + if (!DeviceExtension->Common.IsClassDO) { /* Forward some IRPs to lower device */ switch (IoGetCurrentIrpStackLocation(Irp)->MajorFunction) { - case IRP_MJ_PNP: - case IRP_MJ_INTERNAL_DEVICE_CONTROL: - return ForwardIrpAndForget(DeviceObject, Irp); + case IRP_MJ_POWER: + PoStartNextPowerIrp(Irp); + IoSkipCurrentIrpStackLocation(Irp); + return PoCallDriver(DeviceExtension->LowerDevice, Irp); default: { ERR_(CLASS_NAME, "Port DO stub for major function 0x%lx\n",