dahello
驱动中牛
驱动中牛
  • 注册日期2001-06-16
  • 最后登录2004-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1001回复:0

请指教关于createfile!+

楼主#
更多 发布于:2002-02-28 16:59
各位大虾好:在下有一个问题请教。我想打开一个USB鼠标设备,可怎么也打不开,一到CreateFile时返回值就是0xffffffff,请那位大虾就俺,感激非常!!代码如下!!!


HANDLE GetDeviceViaInterface(GUID *pGuid,DWORD instance)
{  HDEVINFO info=SetupDiGetClassDevs
      (pGuid,NULL,NULL,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE);
   if(info==INVALID_HANDLE_VALUE)
   {
   printf(\"NO HDEVINFO avaliable for this GUID\\n\");
   return NULL;
   }
   SP_INTERFACE_DEVICE_DATA ifdata;
   ifdata.cbSize=sizeof(ifdata);
   if(!SetupDiEnumDeviceInterfaces
      (info,NULL,pGuid,instance,&ifdata))
  {
   printf(\"No SP_INTERFACE_DEVICE_DATA available for this
          GUID instance\\n\");
   SetupDiDestroyDeviceInfoList(info);
   return NULL;
  }
 DWORD ReqLen;
 SetupDiGetDeviceInterfaceDetail
  (info,&ifdata,NULL,0,&ReqLen,NULL);
 PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail=
 (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);
 if(ifDetail==NULL)
 {
  SetupDiDestroyDeviceInfoList(info);
  return NULL;
 }
ifDetail->cbSize=sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if(!SetupDiGetDeviceInterfaceDetail(info,&ifdata,ifDetail,ReqLen,NULL,NULL))
{
  SetupDiDestroyDeviceInfoList(info);
  delete ifDetail;
  return NULL;
}
HANDLE rv=CreateFile(ifDetail->DevicePath,
         GENERIC_READ,
         0,
         NULL,
         OPEN_EXISTING,
         FILE_ATTRIBUTE_SYSTEM,
         NULL);
delete ifDetail;
SetupDiDestroyDeviceInfoList(info);
return rv;
}
不懂就问 :D
游客

返回顶部