- Set status and transferred byte length
- Display error msg when request fails
- Remove asserts
- CORE-6574 CORE-6676

svn path=/trunk/; revision=57811
This commit is contained in:
Johannes Anderwald 2012-12-07 08:18:45 +00:00
parent 704fb912be
commit 075d464e9d

View file

@ -740,6 +740,12 @@ CHubController::HandlePnp(
Status = STATUS_SUCCESS; Status = STATUS_SUCCESS;
break; break;
} }
case IRP_MN_SURPRISE_REMOVAL:
{
DPRINT("[USBLIB] HandlePnp IRP_MN_SURPRISE_REMOVAL\n");
Status = STATUS_SUCCESS;
break;
}
default: default:
{ {
// //
@ -1479,7 +1485,10 @@ CHubController::HandleGetDescriptorFromInterface(
// submit setup packet // submit setup packet
// //
Status = UsbDevice->SubmitSetupPacket(&CtrlSetup, Urb->UrbControlDescriptorRequest.TransferBufferLength, Urb->UrbControlDescriptorRequest.TransferBuffer); 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 // done
@ -1499,7 +1508,7 @@ CHubController::HandleGetDescriptor(
PUSBDEVICE UsbDevice; PUSBDEVICE UsbDevice;
ULONG Length, BufferLength; ULONG Length, BufferLength;
DPRINT("[USBLIB] HandleGetDescriptor\n"); DPRINT("[USBLIB] HandleGetDescriptor Type %x\n", Urb->UrbControlDescriptorRequest.DescriptorType);
// //
// check descriptor type // check descriptor type
@ -1520,6 +1529,8 @@ CHubController::HandleGetDescriptor(
// copy root hub device descriptor // copy root hub device descriptor
// //
RtlCopyMemory((PUCHAR)Urb->UrbControlDescriptorRequest.TransferBuffer, &m_DeviceDescriptor, sizeof(USB_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; Status = STATUS_SUCCESS;
} }
else else
@ -1546,6 +1557,8 @@ CHubController::HandleGetDescriptor(
// retrieve device descriptor from device // retrieve device descriptor from device
// //
UsbDevice->GetDeviceDescriptor((PUSB_DEVICE_DESCRIPTOR)Urb->UrbControlDescriptorRequest.TransferBuffer); 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; Status = STATUS_SUCCESS;
} }
break; break;
@ -1678,7 +1691,9 @@ CHubController::HandleGetDescriptor(
// //
// store result size // store result size
// //
Irp->IoStatus.Information = Length;
Urb->UrbControlDescriptorRequest.TransferBufferLength = Length; Urb->UrbControlDescriptorRequest.TransferBufferLength = Length;
Urb->UrbControlDescriptorRequest.Hdr.Status = USBD_STATUS_SUCCESS;
Status = STATUS_SUCCESS; Status = STATUS_SUCCESS;
} }
break; break;
@ -1827,6 +1842,7 @@ CHubController::HandleVendorDevice(
NTSTATUS Status = STATUS_NOT_IMPLEMENTED; NTSTATUS Status = STATUS_NOT_IMPLEMENTED;
PUSBDEVICE UsbDevice; PUSBDEVICE UsbDevice;
USB_DEFAULT_PIPE_SETUP_PACKET CtrlSetup; USB_DEFAULT_PIPE_SETUP_PACKET CtrlSetup;
PVOID TransferBuffer = NULL;
DPRINT("CHubController::HandleVendorDevice Request %x\n", Urb->UrbControlVendorClassRequest.Request); DPRINT("CHubController::HandleVendorDevice Request %x\n", Urb->UrbControlVendorClassRequest.Request);
@ -1876,7 +1892,6 @@ CHubController::HandleVendorDevice(
// issue request // issue request
// //
Status = UsbDevice->SubmitSetupPacket(&CtrlSetup, Urb->UrbControlVendorClassRequest.TransferBufferLength, Urb->UrbControlVendorClassRequest.TransferBuffer); Status = UsbDevice->SubmitSetupPacket(&CtrlSetup, Urb->UrbControlVendorClassRequest.TransferBufferLength, Urb->UrbControlVendorClassRequest.TransferBuffer);
PC_ASSERT(NT_SUCCESS(Status));
return Status; return Status;
} }