您应该查看 Windows 驱动程序工具包示例,或查看 SetupDi 函数(这些函数允许您枚举设备类型并查询信息)。这些功能记录在这里:http:
//msdn.microsoft.com/en-us/library/windows/hardware/ff553567 (v=vs.85).aspx#ddk_setupdi_device_interface_functions_dg
我也发布了几次,但它是很好的示例代码:
查看 WDK 中的 USBView 示例。如果您对此不熟悉,只需运行它 - 该工具会遍历系统上的整个 USB 树,并打印出每个设备的信息和描述符列表。
在您的情况下,我将从本示例中的 RefreshTree() 函数开始,然后您可以按照代码查看它如何枚举设备。对于您找到的每个设备,您可以查看字符串描述符。
获取此示例源代码的最简单方法是安装 7.1.0 WDK,目前可在此处获得:http: //www.microsoft.com/en-us/download/details.aspx?id=11800
获得 VID/PID/序列号后,您应该能够在注册表中查找端口号。例如,CP210x 的端口号将以HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_10C4&PID_EA60\0001\Device Parameters\Port Name
“COMxx”的形式定位(其中 VID=10C4,PID=EA60,serial=0001)。如果您知道设备的 VID/PID 是什么,您可以跳过 USB 搜索并简单地通过注册表解析以获取该类型的所有设备以发现它们的 COM 端口号。
您还可以在此处获取系统上所有 COM 端口的列表:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
. 值将根据其类型列出,因此真正的串口会显示名称\Device\Serialn
和数据COMxx
,CP210x 会显示名称\Device\Silabsern
和数据COMyy
等。您可以使用名称来过滤 COM 端口的设备类型属于。