fossilman
驱动牛犊
驱动牛犊
  • 注册日期2002-06-23
  • 最后登录2013-06-12
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望192点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1341回复:1

HId设备枚举问题!请做过的朋友解答!

楼主#
更多 发布于:2013-05-19 11:14
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);
fossilman
驱动牛犊
驱动牛犊
  • 注册日期2002-06-23
  • 最后登录2013-06-12
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望192点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2013-05-21 08:04
没有大虾帮忙?
游客

返回顶部