我最近在开发一个usb cable线传输数据的程序。 
经过一段时间的研究,已能够找到设备并成功获取设备路径。 
(GUID={0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED}) 
通过CreateFile也能够打开设备并获得指定设备的句柄,但是调用HidD_GetAttributes()函数时一直返回false,GetLastError()返回错误号87 
想请教下各位达人为什么会这样? 
无法获得设备的属性就无法比对pid 和 vid。又碰到csdn停止服务,郁闷得不得了!! ps:如果我用HidD_GetHidGuid()获取GUID的话就没办法找到指定外接设备了。

解决方案 »

  1.   

    你既然CreateFile都成功了,还去比对PID,VID干什么?
    这些是driver做的,不是你UI做的
      

  2.   

    可能是你的createfile之前的过程不正确或不全正确。
      

  3.   

    会有n个usb设备被列出来,如果不比对的话无法对设备进行过滤
    当然,也可以对设备名里的的PID,VID进行字符串截取比较.只不过我认为既然提供了HidD_GetHidGuid()函数
    为什么不能正常使用呢。87的错误是指参数失败,是不是驱动本身存在问题呢?
      

  4.   


    我之前的过程是获取usb设备的全路径。获取后我与注册表中的设备路径项都进行过对比。
    所有列举的usb设备路径都是正确的。而且我对CreateFile的返回值也进行了判断,也是没有错的。