阅读:1341回复:1
HId设备枚举问题!请做过的朋友解答!
win7下,用以下代码,枚举,发现,当index为0时,第二次即index=1是就错误了;如果一开始设置index从1开始,则可以遍历出4个HID设备,--实际系统不止这几个;代码如下:
CString strShow; strShow="正在查找系统中HID类的GUID标识...\r\n"; ShowMessage(strShow); GUID guidHID; HidD_GetHidGuid(&guidHID); strShow="HID类的GUID标识为:\r\n"; ShowMessage(strShow); strShow.Format("%08x-%04x-%04x-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x\r\n", guidHID.Data1,guidHID.Data2,guidHID.Data3,guidHID.Data4[0], guidHID.Data4[1],guidHID.Data4[2],guidHID.Data4[3],guidHID.Data4[4], guidHID.Data4[5],guidHID.Data4[6],guidHID.Data4[7]); ShowMessage(strShow); HDEVINFO hDevInfo = SetupDiGetClassDevs(&guidHID,NULL,0, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE ); if(hDevInfo==INVALID_HANDLE_VALUE) { ShowMessage("查找USB设备出错!\r\n"); return; } else ShowMessage("找到USB设备.\r\n"); UINT nIndex = 0; strShow= "正在查找可用的USB设备...\r\n"; ShowMessage(strShow); SP_DEVICE_INTERFACE_DATA strtInterfaceData; strtInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA); BOOL bSuccess ; DWORD index=1; CString temp; for(int i=0;i<10;i++) { bSuccess= SetupDiEnumDeviceInterfaces(hDevInfo,0,&guidHID,index, &strtInterfaceData); if (!bSuccess) { ShowMessage("查找USB设备出错!\r\n"); break; } else { if(strtInterfaceData.Flags==SPINT_ACTIVE ) { temp.Format("%d 连接 \r\n",index+1); ShowMessage(temp); ShowMore(hDevInfo,strtInterfaceData); } } index++; } temp.Format("总共%d个设备连接",index); ShowMessage(temp); |
|
沙发#
发布于:2013-05-21 08:04
没有大虾帮忙?
|
|