如何找到设备是否连接USB端口2.0或USB端口3.00?

时间:2017-02-08 14:27:55

标签: winapi visual-c++

我只是想知道如何在窗口中找到连接到USB3.0或USB2.0端口的USB设备。我正在使用c ++和win32 API。请让我知道你的想法。

1 个答案:

答案 0 :(得分:0)

根据您的问题的措辞,我假设您知道设备何时连接,并且需要知道它所连接的端口是否能够支持USB 3.0。

查看USB_NODE_CONNECTION_INFORMATION_EX结构,特别是其中的字段Speed,它可能对应于枚举USB_DEVICE_SPEED中定义的值。对于USB 3.0,Speed的值为UsbSuperSpeed

documentation page表示您可以使用IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX请求获取有关与指示的USB端口关联的连接的信息。

您可能还会从文档中找到以下有用的评论:

  1. 如果没有连接设备,IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX只返回有关端口的信息。
  2. 如果设备已连接到端口IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX,则会返回有关端口和已连接设备的信息。
  3. USB_NODE_CONNECTION_INFORMATION_EX结构是USB_NODE_CONNECTION_INFORMATION的扩展版本。除了一个成员外,这两个结构是相同的。在扩展结构中,Speed成员表示设备速度。
  4. 我还鼓励您单步执行usbview项目,该项目是Github中可用的Windows驱动程序示例的一部分。