繁体   English   中英

如何确定USB端口的速度?

[英]How can I determine the speed of a USB port?

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

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

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

基本上你应该试试这个:

  1. 将USB设备和符号名称枚举到其驱动程序中
  2. 通过CreateFile通过其符号名称打开USB设备驱动程序的句柄
  3. 使用控制代码IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX在驱动程序句柄上执行DeviceIoControl。 这将使您返回结构USB_NODE_CONNECTION_INFORMATION_EX 那里有一个名为SpeedUSB_DEVICE_SPEED类型的USB_DEVICE_SPEED
  4. (关闭驱动程序句柄)

这对您来说也很有趣: CodeProject:枚举已安装设备的属性

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

速度控制通常由驱动器和控制总线的硬件来处理。 大多数现代USB控制器每端口连接2个控制器。 1表示速度较慢的12Mbps USB 1.0,另一表示较高速度的480Mbps USB 2.0。 内部有一个魔术开关可以正确连接它。 驱动程序本身确保正确枚举所有内容,控制流程等。更高级别的“用户空间”应用程序通常不需要担心这些事情。

此外,如果您的设备能够以高于12Mbps的速度运行,并且将其插入12Mbps端口,则无论您是否愿意,都会将其拖至12Mbps。 难道你想知道它被拖了下来吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM