From 075d464e9d0265f262e621aa7bf5f65fa5063608 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Fri, 7 Dec 2012 08:18:45 +0000 Subject: [PATCH] [LIBUSB] - Set status and transferred byte length - Display error msg when request fails - Remove asserts - CORE-6574 CORE-6676 svn path=/trunk/; revision=57811 --- reactos/lib/drivers/libusb/hub_controller.cpp | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/reactos/lib/drivers/libusb/hub_controller.cpp b/reactos/lib/drivers/libusb/hub_controller.cpp index 90e6e9cfb8d..b995fb70d02 100644 --- a/reactos/lib/drivers/libusb/hub_controller.cpp +++ b/reactos/lib/drivers/libusb/hub_controller.cpp @@ -740,6 +740,12 @@ CHubController::HandlePnp( Status = STATUS_SUCCESS; break; } + case IRP_MN_SURPRISE_REMOVAL: + { + DPRINT("[USBLIB] HandlePnp IRP_MN_SURPRISE_REMOVAL\n"); + Status = STATUS_SUCCESS; + break; + } default: { // @@ -1479,7 +1485,10 @@ CHubController::HandleGetDescriptorFromInterface( // submit setup packet // Status = UsbDevice->SubmitSetupPacket(&CtrlSetup, Urb->UrbControlDescriptorRequest.TransferBufferLength, Urb->UrbControlDescriptorRequest.TransferBuffer); - ASSERT(Status == STATUS_SUCCESS); + if (!NT_SUCCESS(Status)) + { + DPRINT1("[USBLIB] HandleGetDescriptorFromInterface failed with %x\n", Status); + } // // done @@ -1499,7 +1508,7 @@ CHubController::HandleGetDescriptor( PUSBDEVICE UsbDevice; ULONG Length, BufferLength; - DPRINT("[USBLIB] HandleGetDescriptor\n"); + DPRINT("[USBLIB] HandleGetDescriptor Type %x\n", Urb->UrbControlDescriptorRequest.DescriptorType); // // check descriptor type @@ -1520,6 +1529,8 @@ CHubController::HandleGetDescriptor( // copy root hub device descriptor // RtlCopyMemory((PUCHAR)Urb->UrbControlDescriptorRequest.TransferBuffer, &m_DeviceDescriptor, sizeof(USB_DEVICE_DESCRIPTOR)); + Irp->IoStatus.Information = sizeof(USB_DEVICE_DESCRIPTOR); + Urb->UrbControlDescriptorRequest.Hdr.Status = USBD_STATUS_SUCCESS; Status = STATUS_SUCCESS; } else @@ -1546,6 +1557,8 @@ CHubController::HandleGetDescriptor( // retrieve device descriptor from device // UsbDevice->GetDeviceDescriptor((PUSB_DEVICE_DESCRIPTOR)Urb->UrbControlDescriptorRequest.TransferBuffer); + Irp->IoStatus.Information = sizeof(USB_DEVICE_DESCRIPTOR); + Urb->UrbControlDescriptorRequest.Hdr.Status = USBD_STATUS_SUCCESS; Status = STATUS_SUCCESS; } break; @@ -1678,7 +1691,9 @@ CHubController::HandleGetDescriptor( // // store result size // + Irp->IoStatus.Information = Length; Urb->UrbControlDescriptorRequest.TransferBufferLength = Length; + Urb->UrbControlDescriptorRequest.Hdr.Status = USBD_STATUS_SUCCESS; Status = STATUS_SUCCESS; } break; @@ -1827,6 +1842,7 @@ CHubController::HandleVendorDevice( NTSTATUS Status = STATUS_NOT_IMPLEMENTED; PUSBDEVICE UsbDevice; USB_DEFAULT_PIPE_SETUP_PACKET CtrlSetup; + PVOID TransferBuffer = NULL; DPRINT("CHubController::HandleVendorDevice Request %x\n", Urb->UrbControlVendorClassRequest.Request); @@ -1876,7 +1892,6 @@ CHubController::HandleVendorDevice( // issue request // Status = UsbDevice->SubmitSetupPacket(&CtrlSetup, Urb->UrbControlVendorClassRequest.TransferBufferLength, Urb->UrbControlVendorClassRequest.TransferBuffer); - PC_ASSERT(NT_SUCCESS(Status)); return Status; }