USB HID问题 有解吗? 点击:168 | 回复:0



xilinxue

    
发表于:2010-02-11 21:49:39
楼主
在插入多个相同设备的情况下,能不能取得各个设备插的是哪个USB口?就象注册表里的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\设备VIDPID\5&76b405d&0&1,5&76b405d&0&2代表不同的USB口
,在用户态程序里可以取得吗(已取得USB HID设备句柄)?或是驱动里可以吗?

lujunql :
发送使用DeviceIoControl发送IOCTL_USB_GET_NODE_CONNECTION_
INFORMATION 请求!OUT参数中就是你要的东东!

zhongdao :
用USB HID打开的设备句柄行吗,怎么我每次都可以成功调用DeviceIoControl发送IOCTL_USB_GET_NODE_CONNECTION_INFORMATION或其它一些IOCTL,但返回的数据总是不对,lpBytesReturned总为0,是不是要用Hub句柄才行啊,谢谢!

snoopy_dl :
不用的。用IOCTL_USB_GET_NODE_CONNECTION_INFORMATION和DeviceIoControl对于通用的usb设备都可以。
我的程序就可以,你需要的话我可以贴出来。
我觉得是你的存储数据结构有问题。
或者是你的句柄有问题,你应该打开的是根集线器的句柄!

zhongdao :
谢谢!
我的句柄是通过HidD_GetHidGuid,SetupDiXXX,CreateFile一系列的函数得到,我想句柄是没问题的,因为可以成功发送数据给我的驱动,至于存储数据结构用的是USB_NODE_CONNECTION_INFORMATION,有问题吗,是从USBView里看来的

snoopy_dl :
我的意思是你所获得的句柄是设备本身的句柄,
如果你要用deviceiocontrol通过USB_NODE_CONNECTION_INFORMATION获取设备描述符,应该使用的句柄是根集线器的句柄!

zhongdao :
但这样就不知道哪个设备插哪个口了,其实取出设备描述符也没用啊,因为我要分辩的是同一种设备,它的设备描述符是一样的啊,有没有其它办法实现啊,我主要的目的是根据插入不同的USB口使用不同的配置,这个配置是动态的,不能在安装时确定.谢谢!

snoopy_dl :
“分辩同一种设备,它的设备描述符是一样“与“哪个设备插哪个口“没有关系的,设备描述符中又没有连接接口的内容。
PS:各个插口的地址是由pc主机分配的,相对主机是确定的。


楼主最近还看过

SSI ļʱ