zl7910
驱动牛犊
驱动牛犊
  • 注册日期2003-10-05
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1368回复:1

列举设备的问题?

楼主#
更多 发布于:2003-12-19 11:03
我用的是网上的源代码,如下:
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}
但都是同样的问题为什么?


zl7910
驱动牛犊
驱动牛犊
  • 注册日期2003-10-05
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-20 11:27
问题找到了,在
BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&HidGuid,index,&DevInterfaceData);
之前须加上
DevInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
见鬼,例子程序也有错。
望各位大侠在上载例子时先测试一便!
游客

返回顶部