【问题标题】:How to find the device is connected to whether USB port 2.0 or USB port 3.00 ?如何查找设备连接的是 USB 端口 2.0 还是 USB 端口 3.00 ?
【发布时间】:2017-02-08 14:27:55
【问题描述】:

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

【问题讨论】:

  • 1.找出设备连接到哪个端口。 2. 确定是否是 USB 3 端口。我敢打赌,这是两个截然不同的问题。我还敢打赌,如果您搜索,您会找到涵盖这两个方面的问题。

标签: winapi visual-c++


【解决方案1】:

根据您的问题的表述方式,我假设您知道设备何时连接,并且需要知道它连接的端口是否支持 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 成员表示设备速度。

我还鼓励您单步执行 usbview 项目,该项目是 Github 中可用的 Windows 驱动程序示例的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 2023-01-23
    • 1970-01-01
    • 2021-11-07
    • 2013-10-07
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多