Correctly support USB hubs
authorHervé Poussineau <hpoussin@reactos.org>
Mon, 15 May 2006 16:05:02 +0000 (16:05 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Mon, 15 May 2006 16:05:02 +0000 (16:05 +0000)
svn path=/trunk/; revision=21908

reactos/drivers/usb/usbhub/pdo.c

index 1339412..d7d117f 100644 (file)
@@ -29,6 +29,28 @@ UsbhubDeviceControlPdo(
        
        switch (Stack->Parameters.DeviceIoControl.IoControlCode)
        {
+               case IOCTL_INTERNAL_USB_GET_ROOT_USB_DEVICE:
+               {
+                       PHUB_DEVICE_EXTENSION DeviceExtension;
+                       
+                       DPRINT("Usbhub: IOCTL_INTERNAL_USB_GET_ROOT_USB_DEVICE\n");
+                       if (Irp->AssociatedIrp.SystemBuffer == NULL
+                               || Stack->Parameters.DeviceIoControl.OutputBufferLength != sizeof(PVOID))
+                       {
+                               Status = STATUS_INVALID_PARAMETER;
+                       }
+                       else
+                       {
+                               PVOID* pHubPointer;
+                               DeviceExtension = (PHUB_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
+                               
+                               pHubPointer = (PVOID*)Irp->AssociatedIrp.SystemBuffer;
+                               *pHubPointer = DeviceExtension->dev;
+                               Information = sizeof(PVOID);
+                               Status = STATUS_SUCCESS;
+                       }
+                       break;
+               }
                default:
                {
                        DPRINT1("Usbhub: Unknown IOCTL code 0x%lx\n", Stack->Parameters.DeviceIoControl.IoControlCode);
@@ -52,7 +74,6 @@ UsbhubPdoStartDevice(
        NTSTATUS Status;
        
        DeviceExtension = (PHUB_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
-       DbgBreakPoint();
        
        /* Register and activate device interface */
        Status = IoRegisterDeviceInterface(