используйте win32 API, чтобы увидеть, есть ли в системе Windows XPe USB2 или просто 1.1 - PullRequest
1 голос
/ 29 июня 2010

Есть ли способ, просто используя win32 API, узнать, какая версия USB доступна?Сборка XPe довольно скромна и не имеет WMI.

Я рассмотрел технику USBview: перечислите концентраторы USB, открыв \. \ HCD0 через скажем \. \ HCD9, используйте DeviceIoControl для получения имени концентратора и ищите расширенный хост-контроллер.Но для создания этого мне понадобится DDK, с которым я не знаком и не хочу устанавливать, если только мне это не нужно.

Есть ли более простой способ?

1 Ответ

1 голос
/ 25 июля 2010

Как вы упоминаете, UsbView перечисляет USB-концентраторы и устройства.Его источник находится в DDK по адресу ddk \ xp \ src \ wdm \ usb \ usbview.

Я нашел более простой подход, который зависел от устройства и работал в моей ситуации.Мне удалось определить скорость на основе максимального размера пакета для устройства.Размер пакета находится в элементе структуры MaximumPacketSize в структуре USBD_PIPE_INFORMATION.На MSDN см. OSRUSBFX2, где написано «Максимальный размер пакета зависит от скорости» - размер USB 2.0 равен 0x200, а размер USB 1.1 равен 0x40.Ищите MSDN для OSRUSBFX2 для получения дополнительной информации.

Хотя не такой универсальный, как перечисление USB-устройств, подход USBD_PIPE_INFORMATION может работать в вашей ситуации и намного проще.

...