Собрали USB девайс. Работаю с ним через драйвера производителя USB контроллера (cypress).
Встала задача определить ID (номер или другую информацию, к которой можно сделать привязку) хаба, к которому подключен наш USB-девайс, а также номер порта. В API драйвера производителя таких функций нет. Единственное, что я могу узнать, это device handle (скорее всего тот, который возвращает CreateFile) и несколько структур USB_DEVICE_DESCRIPTOR, USB_CONFIGURATION_DESCRIPTOR, USB_INTERFACE_DESCRIPTOR.
Насколько я понял, номер порта можно узнать из symbolic name моего устройства. Но я не знаю как его получить, имея на руках только device handle. Скорее всего надо на этот хендл натравить DeviceIoControl с какими-то IOCTL_XXX, но какими никак не могу разобраться.
Построение дерева USB (перечисление всех устройств как в утилите usbview) думаю не подойдет, по причине того, что одновременно к компьютеру будет подключен десяток наших USB девайсов, т.е. сравнение по VID и PID не прокатит. А сравнивать по device handle (одно открыто в драйвере, другое мной в user mode) наверное нет смысла, т.к. скорее всего они будут разные.
Подскажите направление, какую информацию можно извлечь о устройстве имея на руках только этот device handle ?