【问题标题】:use win32 API to see whether a Windows XPe system has got USB2 or just 1.1使用 win32 API 查看 Windows XPe 系统是否有 USB2 或只有 1.1
【发布时间】:2011-03-09 12:43:03
【问题描述】:
有没有办法只使用 win32 API 来找出可用的 USB 版本? XPe 构建非常准系统,并且没有 WMI。
我考虑了 USBview 技术:通过打开 \.\HCD0 到说 \.\HCD9 来枚举 USB 集线器,使用 DeviceIoControl 获取集线器名称,并寻找增强的主机控制器。但是要构建它,我需要我不熟悉并且不想安装的 DDK,除非我真的必须这样做。
有没有更简单的方法?
【问题讨论】:
标签:
c
winapi
windows-xp
embedded
usb
【解决方案1】:
正如您提到的,UsbView 枚举 USB 集线器和设备。它的源代码在 DDK 中的 ddk\xp\src\wdm\usb\usbview。
我找到了一种更简单的方法,该方法针对特定设备并适用于我的情况。我能够根据设备的最大数据包大小确定速度。数据包大小在结构 USBD_PIPE_INFORMATION 中的结构成员 MaximumPacketSize 中。在 MSDN 上,请参阅 OSRUSBFX2,它说“最大数据包大小取决于速度” - USB 2.0 大小为 0x200,USB 1.1 大小为 0x40。在 MSDN 中搜索 OSRUSBFX2 以获取更多信息。
虽然不像枚举 USB 设备那样通用,但 USBD_PIPE_INFORMATION 方法可能适用于您的情况并且更简单。