zhongdao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:2968回复:8

USB HID问题

楼主#
更多 发布于:2004-07-14 11:36
在插入多个相同设备的情况下,能不能取得各个设备插的是哪个USB口?就象注册表里的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\设备VIDPID\5&76b405d&0&1,5&76b405d&0&2代表不同的USB口
,在用户态程序里可以取得吗(已取得USB HID设备句柄)?或是驱动里可以吗?
snoopy_dl
驱动牛犊
驱动牛犊
  • 注册日期2003-01-21
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-21 10:24
但这样就不知道哪个设备插哪个口了,其实取出设备描述符也没用啊,因为我要分辩的是同一种设备,它的设备描述符是一样的啊,有没有其它办法实现啊,我主要的目的是根据插入不同的USB口使用不同的配置,这个配置是动态的,不能在安装时确定.谢谢!


“分辩同一种设备,它的设备描述符是一样“与“哪个设备插哪个口“没有关系的,设备描述符中又没有连接接口的内容。
PS:各个插口的地址是由pc主机分配的,相对主机是确定的。
虚心向各位大虾请教~~~~~~ 争取自身的提高~~~~~~~~~~
binaryman
驱动牛犊
驱动牛犊
  • 注册日期2004-07-13
  • 最后登录2004-08-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-21 01:30
请高手指教:
    我是个新手,对开发驱动程序不懂,我可以检测到我的设备连接到哪个口,但是如何打开我的设备呢?
zhongdao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-15 10:45
但这样就不知道哪个设备插哪个口了,其实取出设备描述符也没用啊,因为我要分辩的是同一种设备,它的设备描述符是一样的啊,有没有其它办法实现啊,我主要的目的是根据插入不同的USB口使用不同的配置,这个配置是动态的,不能在安装时确定.谢谢!
snoopy_dl
驱动牛犊
驱动牛犊
  • 注册日期2003-01-21
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-15 09:51
谢谢!
我的句柄是通过HidD_GetHidGuid,SetupDiXXX,CreateFile一系列的函数得到,我想句柄是没问题的,因为可以成功发送数据给我的驱动,至于存储数据结构用的是USB_NODE_CONNECTION_INFORMATION,有问题吗,是从USBView里看来的


我的意思是你所获得的句柄是设备本身的句柄,
如果你要用deviceiocontrol通过USB_NODE_CONNECTION_INFORMATION获取设备描述符,应该使用的句柄是根集线器的句柄!
虚心向各位大虾请教~~~~~~ 争取自身的提高~~~~~~~~~~
zhongdao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-15 08:45
谢谢!
我的句柄是通过HidD_GetHidGuid,SetupDiXXX,CreateFile一系列的函数得到,我想句柄是没问题的,因为可以成功发送数据给我的驱动,至于存储数据结构用的是USB_NODE_CONNECTION_INFORMATION,有问题吗,是从USBView里看来的
snoopy_dl
驱动牛犊
驱动牛犊
  • 注册日期2003-01-21
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-14 21:04
用USB HID打开的设备句柄行吗,怎么我每次都可以成功调用DeviceIoControl发送IOCTL_USB_GET_NODE_CONNECTION_INFORMATION或其它一些IOCTL,但返回的数据总是不对,lpBytesReturned总为0,是不是要用Hub句柄才行啊,谢谢!


不用的。用IOCTL_USB_GET_NODE_CONNECTION_INFORMATION和DeviceIoControl对于通用的usb设备都可以。
我的程序就可以,你需要的话我可以贴出来。
我觉得是你的存储数据结构有问题。
或者是你的句柄有问题,你应该打开的是根集线器的句柄!
虚心向各位大虾请教~~~~~~ 争取自身的提高~~~~~~~~~~
zhongdao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-14 16:20
用USB HID打开的设备句柄行吗,怎么我每次都可以成功调用DeviceIoControl发送IOCTL_USB_GET_NODE_CONNECTION_INFORMATION或其它一些IOCTL,但返回的数据总是不对,lpBytesReturned总为0,是不是要用Hub句柄才行啊,谢谢!
lujunql
驱动小牛
驱动小牛
  • 注册日期2004-06-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-14 12:21
发送使用DeviceIoControl发送IOCTL_USB_GET_NODE_CONNECTION_INFORMATION请求!OUT参数中就是你要的东东!
游客

返回顶部