Leave_RAINBOW 2016-03-16 07:43 采纳率: 0%
浏览 2098

windows GUID SetupDiGerClassDevs(...)获取USB设备信息失败

下面这段代码是为了获取本机USB设备驱动handle的,可是逐句运行的时候,
SetupDiGerClassDevs返回值老是 INVALID_HANDLE_VALUE。

#pragma comment(lib,"setupapi")   //ERROR linkerror 1120 
#include<Windows.h>
#include<SetupAPI.h>
#include<iostream>
#include<initguid.h>   //GUDI header
#include<Usbiodef.h>   //USB GUID header

//USB 设备的GUID
BOOL GetDevs(HDEVINFO &hdevino) {
    hdevino = SetupDiGetClassDevs((LPGUID)&GUID_DEVINTERFACE_USB_DEVICE, 0, 0, DIGCF_DEFAULT | DIGCF_DEVICEINTERFACE);
    if (hdevino = INVALID_HANDLE_VALUE)
        return false;
    else
        return true;
}

void EnumDevice(HDEVINFO &hdevino,SP_DEVINFO_DATA &DeviceInfoData) {
    for (DWORD i = 0; SetupDiEnumDeviceInfo(hdevino, i, &DeviceInfoData); i++)
        std::cout << "element is " << i << std::endl;
}

int main()
{
    HDEVINFO deinfo;
    SP_DEVINFO_DATA DeviceInfoData;
    if (GetDevs(deinfo) == true)
    {
        std::cout << "succeed" << std::endl;
        EnumDevice(deinfo, DeviceInfoData);
    }
    else {
        std::cout << "fail" << std::endl;
    }
    return 0;
}

大侠们,帮帮忙把把问题所在,论坛新人,还没有币给大家。。sorry

  • 写回答

2条回答

  • 志汉天涯 2016-03-16 07:59
    关注
      **    如果函数运行成功,返回设备信息结构的句柄,该结构包含与指定参数匹配的所有已安装设备。如果失败,则返回INVALID_HANDLE_VALUE。调用GetLastError可以获得更多错误信息。**
    
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?