是否有一种简单的方法可以通过编程方式确定USB端口的速度(或版本)?我希望根据最大带宽控制发送到USB端口的数据速度。
答案 0 :(得分:5)
如果您需要适用于Windows的解决方案,这应该是一个良好的开端:
http://msdn.microsoft.com/en-us/library/ms793313.aspx
基本上你应该试试这个:
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX
在驱动程序句柄上执行DeviceIoControl。这将使您返回结构USB_NODE_CONNECTION_INFORMATION_EX
。那里有一个名为Speed
{{1}}的成员。这对您来说也很有趣:USB_DEVICE_SPEED
答案 1 :(得分:0)
要回答您的问题,我确信有办法获取您需要的信息。我不知道Windows的答案,但Linux有你可以在sysfs目录结构中读取的文件。
速度控制通常由驱动程序和控制总线的硬件来处理。大多数现代USB控制器每端口连接2个控制器。 1表示速度较慢的12Mbps USB 1.0,另一表示较高速度的480Mbps USB 2.0。内部有一个魔术开关可以正确连接它。驱动程序本身确保正确枚举所有内容,控制流程等。更高级别的“用户空间”应用程序通常不需要担心这些事情。
此外,如果您的设备能够以高于12Mbps的速度运行,并且将其插入12Mbps端口,则无论您是否愿意,它都会被拖到12Mbps。难道你想知道它被拖了下来吗?