阅读:1368回复:1
列举设备的问题?
我用的是网上的源代码,如下:
m_strLog.Empty(); m_strLog = _T(\"正在查找系统中HID类的GUID标...\\r\\n\"); SetDlgItemText(IDC_EDIT_REPORT,m_strLog); // 查找本系统中HID类的GUID标识 GUID guidHID; HidD_GetHidGuid(&guidHID); m_strLog += _T(\"HID类的GUID标识为\\r\\n\"); CString 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]); m_strLog += strShow; SetDlgItemText(IDC_EDIT_REPORT,m_strLog); // 准备查找符合HID规范的USB设备 HDEVINFO hDevInfo = SetupDiGetClassDevs(&guidHID,NULL,0, DIGCF_PRESENT | IGCF_DEVICEINTERFACE); UINT nIndex = 0; m_strLog += _T(\"正在查找可用的USB设备...\\r\\n\"); SetDlgItemText(IDC_EDIT_REPORT,m_strLog); // 查找USB设备接口 SP_DEVICE_INTERFACE_DATA strtInterfaceData; BOOL bSuccess = SetupDiEnumDeviceInterfaces( hDevInfo,NULL,&guidHID,0,&strtInterfaceData); if (!bSuccess) { m_strLog += _T(\"抱歉,未找到可用的USB设备\"); SetupDiDestroyDeviceInfoList(hDevInfo); return; } ...... 程序每次在if (!bSuccess)条件中返回,我的电脑上装了一个USB鼠标,设备管理器中增加了一个“人机接口设备”和“HID-compliant mouse”,由此看设备应安装正常。HidD_GetHidGuid返回的GUID为 {4D1E55B2-F16F-11CF-88CB-001111000030},这是谁的GUID? 我又试了直接赋值给guidHID为注册表中查的值: HID:{745a17a0-74d3-11d0-b6fe-00a0c90f57da} USB:{36FC9E60-C465-11CF-8056-444553540000} MOUSE:{4d36e96f-e325-11ce-bfc1-08002be10318} 但都是同样的问题为什么? |
|
沙发#
发布于:2003-12-20 11:27
问题找到了,在
BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&HidGuid,index,&DevInterfaceData); 之前须加上 DevInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); 见鬼,例子程序也有错。 望各位大侠在上载例子时先测试一便! |
|