电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

USB HID问题 有解吗?

zhongdao  楼主  发表于: 2004-07-14 11:36  USB HID问题

在插入多个相同设备的情况下,能不能取得各个设备插的是哪个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主机分配的,相对主机是确定的。

博主
walnutcy@163.com
青藤门客播报站
walnutcy   Man  Age: 28    Email: walnutcy@gmail.com <span style="COLOR: blue"
点击跳转