代码之家  ›  专栏  ›  技术社区  ›  SwDevMan81

如何确定USB端口的速度?

  •  3
  • SwDevMan81  · 技术社区  · 15 年前

    有没有一种简单的方法可以通过编程确定USB端口的速度(或版本)?我希望根据USB端口的最大带宽控制数据发送到USB端口的速度。

    2 回复  |  直到 12 年前
        1
  •  4
  •   Robert    15 年前

    如果您需要Windows的解决方案,这应该是一个良好的开端:

    http://msdn.microsoft.com/en-us/library/ms793313.aspx

    基本上你应该试试这个:

    1. 枚举USB设备及其驱动程序的符号名
    2. 通过其符号名通过createfile打开USB设备驱动程序的句柄
    3. 用控制代码在驱动手柄上执行deviceiocontrol IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX . 这将使您返回结构 USB_NODE_CONNECTION_INFORMATION_EX . 那里有一个成员打电话给你 Speed 类型的 USB_DEVICE_SPEED .
    4. (关闭驱动手柄)

    这对你来说也很有趣: CodeProject: Enumerate Properties of an Installed Device

        2
  •  0
  •   KFro    15 年前

    为了回答你的问题,我相信有办法获得你需要的信息。我不知道Windows的答案,但是Linux有可以在sysfs目录结构中读取的文件。

    速度控制通常由司机和控制总线的硬件来完成。大多数现代的USB控制器每连接一个端口就有两个控制器。1个用于较慢速度的12Mbps USB 1.0,另一个用于较高速度的PSED 480Mbps USB 2.0。里面有一个魔术开关,可以把它正确地连接起来。驱动程序本身确保正确枚举所有内容,控制流等。更高级别的“用户空间”应用程序通常不需要担心这些问题。

    此外,如果您的设备能够以超过12Mbps的速度运行,并且将其插入12Mbps端口,则无论您喜欢与否,它都将被拖至12Mbps。你是想知道被拖下水了吗?