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

做过的兄弟们,帮帮我找出问题在哪里吧!!!

楼主#
更多 发布于:2005-08-09 18:41
  请问为什么我的SetupDiEnumDeviceInterfaces函数返回值总是0?
 const GUID CardGuid={0x36fc9e60L, 0xc465, 0x11cf, {0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} };

HDEVINFO hDevInfo = SetupDiGetClassDevs(&CardGuid,NULL,NULL,(DIGCF_PRESENT | DIGCF_INTERFACEDEVICE));
if(!hDevInfo)
{
 ShowMessage("Couldn't get handle for HID devices");
 return;
}
  unsigned long Index;
  DWORD ReqLength;
  DWORD Flags=DIGCF_PRESENT|DIGCF_DEVICEINTERFACE;


  PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceDetailData;
  SP_DEVICE_INTERFACE_DATA        DeviceInterfaceData;
  DeviceInterfaceData.cbSize=sizeof(SP_DEVICE_INTERFACE_DATA);

  HANDLE  hCard=SetupDiGetClassDevs(&CardGuid,NULL,NULL,Flags);
  if(hCard==INVALID_HANDLE_VALUE)
        {
          ShowMessage("Invalid Parameters!");
          return;
        }

  BOOL status=SetupDiEnumDeviceInterfaces(hCard,0,&CardGuid,Index,&DeviceInterfaceData);

   if(!status)
         {
            ShowMessage("Failed to enumurate the specified device!");
            CloseHandle(hCard);
            return;
         }

 SetupDiGetInterfaceDeviceDetail(hCard,&DeviceInterfaceData,NULL,0,&ReqLength,NULL);
 DeviceDetailData=(PSP_INTERFACE_DEVICE_DETAIL_DATA)new char[ReqLength];
 if(DeviceDetailData)
         {
           ShowMessage("ERROR NOT ENOUGH MEMORY!");
           CloseHandle(hCard);
           return;
         }

 status=SetupDiGetInterfaceDeviceDetail(hCard,&DeviceInterfaceData,DeviceDetailData,ReqLength,&ReqLength,NULL);

 if(!status)
        {
         ShowMessage("Failed to get interface detailed data");
         delete DeviceDetailData;
         DeviceDetailData=NULL;
         return;
        }

HANDLE hUSB = CreateFile(DeviceDetailData->DevicePath, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ |FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);

free(DeviceDetailData);

if(INVALID_HANDLE_VALUE == hUSB)
   {
    ShowMessage("Couldn't get HID handle");
    return;
   }
游客

返回顶部