如何确定正在使用哪个USB端口

How to determine which USB port is being used?

本文关键字:USB 端口 何确定      更新时间:2023-10-16

我的硬件设备连接到PC并公开虚拟串行端口。串行端口号因设备插入的物理USB端口而异。有没有一种方法可以让我的应用程序知道我的设备连接到哪个物理USB端口?这将真正帮助我优化代码。目前,我的应用程序通过迭代所有可能的端口来确定每次设备连接时的实际端口号,这是一个漫长的过程。如果我知道它连接的是哪个USB端口,我就已经知道它暴露的是哪个通信端口,我可以为每个特定的物理USB端口(配置文件)保存/加载这些设置。我使用的是C++/MFC和Windows7。我也希望这在XP中工作。

WDK中提供了USBView示例源。如果你不熟悉这一点,只需运行它——这个工具会遍历系统上的整个USB树,并打印出每个设备的信息和描述符列表,以及主机控制器和集线器上的位置。

从这个示例中的RefreshTree()函数开始,然后可以按照代码查看它是如何枚举主机控制器、集线器以及最后的设备的。

获取此示例源代码的最简单方法是安装7.1.0 WDK,该WDK目前在这里可用:http://www.microsoft.com/en-us/download/details.aspx?id=11800