如何获取usb设备插入的usb hub对应的编号

hopevc 2014-11-17 02:43:18
电脑上接了三个usb总线,一个用来接鼠标和键盘,内外两个分别接两个usb hub,每一个hub分出10个usb口,共20个usb口用来接入usb设备,请问设备接入的时候能知道设备接入的usb口硬件系号吗,就是要知道是插入的是这20个usb口的第几个口
与设备通信是用libusb0.dll(标准的usb通信协议),通过这几步去列举接入的设备,
usb_find_busses();
usb_find_devices();
usb_get_busses();
有没有同事对usb驱动了解非常透彻的,在列举设备的时候是否能获取usb hub编号,或者通过调用win api能否获得?
...全文
给本帖投票
1757 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hopevc 2014-12-23
  • 打赏
  • 举报
回复 1
1. 对于可以知道设备系列号的设备,可以通过setupapi去列举所有的usb设备驱动信息,驱动信息里也会有设备的系列号,比对系列号,从对应的驱动信息里获取位置信息 2. 对于u盘设备,一个u盘设备对应着三个驱动详细信息,volume驱动信息,storage驱动信息,和usb驱动信息,同一个设备volume和storage信息里的系列号是相等的,但这两个信息里都没有位置信息,storage信息里的父系对应着usb驱动信息,usb驱动信息里有位置信息,首先注册windows硬件消息函数接收盘符的插入和删除,当盘符插入时,通过盘符可以从注册表拿到对应的volume驱动信息里的系列号,然后通过setupapi去列举所有的storage设备驱动信息,比对系列号,如果和volume的相同,就去获取它的父系系列号,最后再通过setupapi去列举所有的usb设备驱动信息,通过上一步获取的父系系列号找到对应的usb设备驱动信息,这样就可以获取位置信息了,哎,不容易啊 Ps:对于没有填写系列号的设备,windows会动态去给每台设备分配系列号,保证设备实例里的系列号唯一
阿先森 2014-11-27
  • 打赏
  • 举报
回复
不妨使用CxDeviceFind设备查找类 http://www.cnblogs.com/EdmundDwyane/p/3187226.html
hopevc 2014-11-17
  • 打赏
  • 举报
回复
和USBView sample application一起下载了,研究下
shen_wei 2014-11-17
  • 打赏
  • 举报
回复

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部