c - 使用 win32 API 查看 Windows XPe 系统是否有 USB2 或只有 1.1

标签 c winapi windows-xp embedded usb

有没有办法,只使用 win32 API,找出可用的 USB 版本? XPe 构建非常简单,没有 WMI。

我考虑了 USBview 技术:通过打开\.\HCD0 到\.\HCD9 枚举 USB 集线器,使用 DeviceIoControl 获取集线器名称,并寻找增强的主机 Controller 。但是要构建它,我需要我不熟悉并且不想安装的 DDK,除非我真的必须安装。

有没有更简单的方法?

最佳答案

如您所述,UsbView 枚举 USB 集线器和设备。它的源代码位于 ddk\xp\src\wdm\usb\usbview 的 DDK 中。

我找到了一种更简单的方法,该方法特定于设备并且适用于我的情况。我能够根据设备的最大数据包大小确定速度。数据包大小在结构 USBD_PIPE_INFORMATION 的结构成员 MaximumPacketSize 中。在 MSDN 上,请参阅 OSRUSBFX2,其中显示“最大数据包大小取决于速度”——USB 2.0 大小为 0x200,USB 1.1 大小为 0x40。在 MSDN 中搜索 OSRUSBFX2 以获取更多信息。

尽管 USBD_PIPE_INFORMATION 方法不像枚举 USB 设备那样通用,但它可能适用于您的情况,并且更简单。

关于c - 使用 win32 API 查看 Windows XPe 系统是否有 USB2 或只有 1.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3139250/

相关文章:

c - 分段故障核心转储: Function that returns the next prime number

C++ Win32 通过电子邮件或网络浏览器发送消息

c++ - 将 getifaddrs 移植到 Win XP

deployment - 在 Windows XP 64 位上配置命名空间保留

c++ - Telnet 客户端控制台 : SEND invalid command - Only for Spanish version

java - 从套接字中逐行读取

c - 取消引用指针和访问数组元素之间的区别

c - 如何找到c中所有数据类型的限制

c# - 如何获取文件夹的 NTFS 文件 ID

c++ - 如何找到我的线程在哪个 CPU 内核上运行