From 1f321cafad82ff9a54580a96be7a05d9a2128713 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 23 Jan 2012 16:22:43 +0000 Subject: [PATCH] [USB-BRINGUP-TRUNK] - Allow surprise removal of HID devices - Don't assemble useless empty resource lists svn path=/branches/usb-bringup-trunk/; revision=55119 --- drivers/hid/hidusb/hidusb.c | 5 +++++ drivers/usb/usbhub_new/pdo.c | 38 ++++++------------------------------ 2 files changed, 11 insertions(+), 32 deletions(-) diff --git a/drivers/hid/hidusb/hidusb.c b/drivers/hid/hidusb/hidusb.c index 1ece9b948db..46e40ce5fc8 100644 --- a/drivers/hid/hidusb/hidusb.c +++ b/drivers/hid/hidusb/hidusb.c @@ -1504,6 +1504,11 @@ HidPnp( // IoStack->Parameters.DeviceCapabilities.Capabilities->DeviceD1 = TRUE; IoStack->Parameters.DeviceCapabilities.Capabilities->DeviceD2 = TRUE; + + // + // don't need to safely remove + // + IoStack->Parameters.DeviceCapabilities.Capabilities->SurpriseRemovalOK = TRUE; } // diff --git a/drivers/usb/usbhub_new/pdo.c b/drivers/usb/usbhub_new/pdo.c index 170e1328e3b..6d07d3e6082 100644 --- a/drivers/usb/usbhub_new/pdo.c +++ b/drivers/usb/usbhub_new/pdo.c @@ -517,44 +517,18 @@ USBHUB_PdoHandlePnp( } case IRP_MN_QUERY_RESOURCES: { - PCM_RESOURCE_LIST ResourceList; - DPRINT1("IRP_MJ_PNP / IRP_MN_QUERY_RESOURCES\n"); - ResourceList = ExAllocatePool(PagedPool, sizeof(CM_RESOURCE_LIST)); - if (!ResourceList) - { - DPRINT1("ExAllocatePool() failed\n"); - Status = STATUS_INSUFFICIENT_RESOURCES; - } - else - { - ResourceList->Count = 0; - Information = (ULONG_PTR)ResourceList; - Status = STATUS_SUCCESS; - } + + Information = Irp->IoStatus.Information; + Status = Irp->IoStatus.Status; break; } case IRP_MN_QUERY_RESOURCE_REQUIREMENTS: { - PIO_RESOURCE_REQUIREMENTS_LIST ResourceList; DPRINT1("IRP_MJ_PNP / IRP_MN_QUERY_RESOURCE_REQUIREMENTS\n"); - ResourceList = ExAllocatePool(PagedPool, sizeof(IO_RESOURCE_REQUIREMENTS_LIST)); - if (!ResourceList) - { - DPRINT1("ExAllocatePool() failed\n"); - Status = STATUS_INSUFFICIENT_RESOURCES; - } - else - { - RtlZeroMemory(ResourceList, sizeof(IO_RESOURCE_REQUIREMENTS_LIST)); - ResourceList->ListSize = sizeof(IO_RESOURCE_REQUIREMENTS_LIST); - ResourceList->AlternativeLists = 1; - ResourceList->List->Version = 1; - ResourceList->List->Revision = 1; - ResourceList->List->Count = 0; - Information = (ULONG_PTR)ResourceList; - Status = STATUS_SUCCESS; - } + + Information = Irp->IoStatus.Information; + Status = Irp->IoStatus.Status; break; } case IRP_MN_QUERY_DEVICE_TEXT: