如何确定USB端口的速度?

时间:2009-08-24 20:33:30

标签: c# usb performance

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

2 个答案:

答案 0 :(得分:5)

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

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

基本上你应该试试这个:

  1. 将USB设备和符号名称枚举到其驱动程序
  2. 通过CreateFile
  3. 的符号名称打开USB设备驱动程序的句柄
  4. 使用控制代码IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX在驱动程序句柄上执行DeviceIoControl。这将使您返回结构USB_NODE_CONNECTION_INFORMATION_EX。那里有一个名为Speed {{1}}的成员。
  5. (关闭驱动程序句柄)
  6. 这对您来说也很有趣:USB_DEVICE_SPEED

答案 1 :(得分:0)

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

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

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