USB device hierarchy is incorrect

Discussion in 'Windows Virtual Machine' started by Martin2, Mar 20, 2015.

  1. Martin2

    Martin2 Bit poster

    Messages:
    1
    We produce a USB unit that contains an internal hub which is connected to two devices: an HID device and a flash disk. We also produce some software that manages this USB unit.

    Our software enumerates HID devices using SetupDiEnumDeviceInterfaces. When it finds our HID device we call CM_Get_Parent to get the parent device (which is the internal hub device).

    We also enumerate disks in the same way and when we find our device we also call CM_Get_Parent to get the parent device (which should be the same internal hub device).

    In this way if there are more than one of our USB units attached we can work out which HID device goes with which flash disk.

    When running under native Windows (any version) the parent is always listed as:
    USB\Vid_XXXX&Pid_YYYY&Rev... (where XXXX is the vendor ID and YYY Y the product ID of the internal hub.The parent of this is USB\ROOT_HUB20&VID8086&PID3A3C&REV0000... i.e. the computer root hub. This makes sense.

    However, when running under Windows 7 in Parallels the parent of the HID device is:
    USB\ROOT_HUB&VID8086&PID2658... i.e. the computer root hub. So the internal hub is missed out!

    Also the parent of the flash disk device is USB\ROOT_HUB20&VID8086&PID265C...
    So, again the internal hub is missed out! Not only that but the parent device is different to the HID parent when they should be the same.

    So, it seems that you do not preserve the correct Hierarchy of USB devices. This causes our software to fail under Windows 7 (other versions not tested) in Parallels, but it always works fine in native Windows.

    Is there any chance you could fix this in a future release of Parallels?
     

Share This Page