[USBHUB]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Mon, 23 Jan 2012 23:41:40 +0000 (23:41 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Mon, 23 Jan 2012 23:41:40 +0000 (23:41 +0000)
- Add more checks for detecting composite device

svn path=/branches/usb-bringup-trunk/; revision=55135

drivers/usb/usbhub_new/fdo.c

index af80149..4428724 100644 (file)
@@ -806,8 +806,25 @@ GetUsbStringDescriptor(
 
 ULONG
 IsCompositeDevice(
-    PUSB_DEVICE_DESCRIPTOR DeviceDescriptor)
+    IN PUSB_DEVICE_DESCRIPTOR DeviceDescriptor,
+    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor)
 {
+    if (DeviceDescriptor->bNumConfigurations != 1)
+    {
+         //
+         // composite device must have only one configuration
+         //
+         return FALSE;
+    }
+
+    if (ConfigurationDescriptor->bNumInterfaces < 2)
+    {
+        //
+        // composite device must have multiple interfaces
+        //
+        return FALSE;
+    }
+
     if (DeviceDescriptor->bDeviceClass == 0)
     {
         //
@@ -877,7 +894,7 @@ CreateDeviceIds(
     //
     // Construct the CompatibleIds
     //
-    if (IsCompositeDevice(DeviceDescriptor))
+    if (IsCompositeDevice(DeviceDescriptor, UsbChildExtension->FullConfigDesc))
     {
         Index += swprintf(&BufferPtr[Index], 
                           L"USB\\DevClass_%02x&SubClass_%02x&Prot_%02x",