如何使用SetupDiGetDeviceRegistryProperty获取实际的COM端口号

时间:2010-10-31 00:42:16

标签: c++ serial-port

我正在尝试使用“Windows 2000”方法获取可用COM端口的列表 - 这里解释的方法:
http://www.codeproject.com/KB/system/setupdi.aspx

我目前的代码:http://pastebin.ca/1977670
这就是我得到的:

\\?\ftdibus#vid_0403+pid_6001+ftf479xra#0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
USB Serial Port (COM13)
USB Serial Port

\\?\hdaudio#func_02&ven_11c1&dev_1040&subsys_11c10001&rev_1002#4&ddab605&0&0101#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
Agere Systems HDA Modem
Agere Systems HDA Modem

我查看了SetupDiGetDeviceRegistryProperty的不同选项,但是我找不到合适的一个来获取实际的COM端口号。 (见http://msdn.microsoft.com/en-us/library/ff551967(VS.85).aspx

可以以友好名称寻找COMXXX(通过正则表达式或其他......),但我认为这不是正确的解决方案......

1 个答案:

答案 0 :(得分:2)

您可以使用SetupDiOpenDevRegKey打开设备的注册表并查询“PortName”值;这会给你一些类似“COM4”的东西。还有一些ways to query COM ports