读书人

枚举串口资源,该怎么解决

发布时间: 2012-12-17 09:31:40 作者: rapoo

枚举串口资源
最近我在学习串口通信的时候遇到这样一个问题,查找注册表,枚举其中所有的串口资源,但是枚举出来的跟实际的不一致,举个例子。注册表中有五个口,com1,com2,com37,com38,com39,其中com1,com2是系统一直默认存在的,com37,com38,com39是手机连接之后出现的口,依次为application,modem及diagnosis口,枚举之后出现的结果为com1,com2,com2,com2,com2。从结果看,确实找到五个口,但后面三个为什么都是com2,一直找不出问题出在哪里,请高手帮忙看下,代码如下:
HKEY hKey;

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\DeviceMap\\SerialComm"), NULL, KEY_READ, &hKey)==ERROR_SUCCESS)
{
TCHARszPortName[256], szComName[256];
DWORDdwLong, dwSize;
intnCount= 0;
CComboBox*pCombo= (CComboBox*)GetDlgItem(IDC_COMBO_COM);

pCombo->ResetContent();
while(true)
{
dwLong= dwSize= 256;
if(RegEnumValue(hKey, nCount, szPortName, &dwLong, NULL, NULL, (PUCHAR)szComName, &dwSize)==ERROR_NO_MORE_ITEMS)
break;

pCombo->InsertString(nCount, szComName);
nCount++;
}
RegCloseKey(hKey);
pCombo->SetCurSel(0);
}
[解决办法]
通过注册表枚举串口 .
[解决办法]
谢谢回复,我看了你的代码,其实我们是一样的,我也枚举出来了,只是后面三个COM口与实际不同,不清楚为什么会出现这种状况,请问你遇到过这种情况吗?
[解决办法]
代码没什么问题。你看看RegEnumValue后面几次的返回值可能有问题的
[解决办法]
问题依旧,不过结贴了,谢谢楼上两位!

读书人网 >VC/MFC

热点推荐