kuaishang
驱动牛犊
驱动牛犊
  • 注册日期2005-12-16
  • 最后登录2007-12-04
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1063回复:1

SetupDiEnumDeviceInterfaces的返回值为什么总为0?请指教,谢谢

楼主#
更多 发布于:2007-12-02 07:45
   TCHAR * GUIDString = NULL;
    GUIDString=_T("36FC9E60-C465-11CF-8056-444553540000");
    GUID CardGuid;
    ZeroMemory(&CardGuid, sizeof(GUID));
    UuidFromString((unsigned char *)GUIDString, &CardGuid);

    DWORD ReqLength;
    DWORD Flags=DIGCF_PRESENT|DIGCF_DEVICEINTERFACE;

    HDEVINFO hCard;
    PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceDetailData;
    SP_DEVICE_INTERFACE_DATA        DeviceInterfaceData;
    DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);
  
    hCard=SetupDiGetClassDevs(
        &CardGuid,
        NULL,
        NULL,
        Flags);
    if(hCard==INVALID_HANDLE_VALUE){
        ::MessageBox(0,"查找符合cardguid的USB设备失败","Error",MB_OK|MB_ICONERROR);
         return;
    }

    BOOL status=SetupDiEnumDeviceInterfaces(
        hCard,
        NULL,
        &CardGuid,
                0,
        &DeviceInterfaceData);
    if(!status){
        ::MessageBox(0,"查找USB设备接口index失败","Error",MB_OK+MB_ICONERROR);
        ::CloseHandle(hCard);
        return;
    }
    
    SetupDiGetInterfaceDeviceDetail(
        hCard,
        &DeviceInterfaceData,
        NULL,
        0,
        &ReqLength,
        NULL);
    DeviceDetailData=(PSP_INTERFACE_DEVICE_DETAIL_DATA)new char[ReqLength];
    if(DeviceDetailData){
        ::CloseHandle(hCard);
        return;
    }
    status=SetupDiGetInterfaceDeviceDetail(
        hCard,
        &DeviceInterfaceData,
        DeviceDetailData,
        ReqLength,
        &ReqLength,
        NULL);
     if(!status){
         ::MessageBox(0,"读取设备路径名失败","Error",MB_OK+MB_ICONERROR);
         delete DeviceDetailData;
         DeviceDetailData=NULL;
         return;
     }

是不是guid的赋值方式不对?应该怎么赋值?
kuaishang
驱动牛犊
驱动牛犊
  • 注册日期2005-12-16
  • 最后登录2007-12-04
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-12-02 08:33
我将
  TCHAR * GUIDString = NULL;
    GUIDString=_T("36FC9E60-C465-11CF-8056-444553540000");
    GUID CardGuid;
    ZeroMemory(&CardGuid, sizeof(GUID));
    UuidFromString((unsigned char *)GUIDString, &CardGuid);

改成
 GUID CardGuid={0x36FC9E60,0xC465,0x11CF,{0x80,0x56,0x44,0x45,0x53,0x54,0x00,0x00}};
这样的赋值方式,结果也一样
问题出在哪里呢?请指教
游客

返回顶部