tyl1120
驱动牛犊
驱动牛犊
  • 注册日期2005-03-22
  • 最后登录2005-08-24
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1347回复:1

找设备路径出现的问题

楼主#
更多 发布于:2005-08-03 09:42
  请问以下程序打开路径过程中,为什么BOOL status=SetupDiEnumDeviceInterfaces(husb,NULL,&USB_DRIVER_GUID,Index,&DeviceInterfaceData)返回总为零???

 DWORD Index;
  DWORD ReqLength;
  DWORD Flags=DIGCF_PRESENT|DIGCF_DEVICEINTERFACE;
  GUID USB_DRIVER_GUID= {0x36FC9E60, 0xC465, 0x11CF, {0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}};
  HANDLE husb=0;

  PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceDetailData;
  SP_DEVICE_INTERFACE_DATA        DeviceInterfaceData;
  DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);
  husb=SetupDiGetClassDevs(&USB_DRIVER_GUID,NULL,NULL,Flags);
  if(husb==INVALID_HANDLE_VALUE)
     {
         return;
     }
  BOOL status=SetupDiEnumDeviceInterfaces(husb,NULL,&USB_DRIVER_GUID,Index,&DeviceInterfaceData);
  if(!status)
     {
         CloseHandle(husb);
         return;
     }
  SetupDiGetInterfaceDeviceDetail(husb,&DeviceInterfaceData,NULL,0,&ReqLength,NULL);
  DeviceDetailData=(PSP_INTERFACE_DEVICE_DETAIL_DATA)new char[ReqLength];
  if(DeviceDetailData)
    {
         CloseHandle(husb);
         return;
    }
  status=SetupDiGetInterfaceDeviceDetail(husb,&DeviceInterfaceData,DeviceDetailData,ReqLength,&ReqLength,NULL);
  if(!status)
  {
         delete DeviceDetailData;
         DeviceDetailData=NULL;
         return;
  }

   HANDLE  hUSB = CreateFile (DeviceDetailData->DevicePath,
                              GENERIC_WRITE | GENERIC_READ,
                              FILE_SHARE_WRITE | FILE_SHARE_READ,
                              NULL,
                              OPEN_EXISTING,
                              FILE_FLAG_OVERLAPPED,
                              NULL);
silkyu
驱动牛犊
驱动牛犊
  • 注册日期2005-07-20
  • 最后登录2006-07-05
  • 粉丝0
  • 关注0
  • 积分139分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-04 16:08
BOOL status=SetupDiEnumDeviceInterfaces(husb,NULL,&USB_DRIVER_GUID,Index,&DeviceInterfaceData)返回总为零
这个问题我今天刚好遇到,
原因可能是:
1. 你在执行这个函数的时候没有插上USB设备。所以应当确保Usb设备与主机在已经连接的状态,驱动程序已经安装的情况下(usb设备图标不出现问号),再调用SetupDiEnumDeviceInterfaces;
2. 上次调用了SetupDiEnumDeviceInterfaces函数, 但是在退出应用程序时没有调用SetupDiDestroyDeviceInfoList( husb), 再次打开应用程序,调用SetupDiEnumDeviceInterfaces会返回0;
3. 编写的驱动程序有问题
游客

返回顶部