如何在内核中识别USB设备的类型

sparrow17 2014-06-18 02:51:57
最近在做USB总线有关的过滤驱动,框架是WDM,挂载的GUID是USB通用总线,我想在AddDevice的时候获取插入的USB设备类型,比如USB存储设备,USB照相机,USB打印机什么的。
现在正在尝试的方法是,在adddevice的时候,调用IoGetDeviceProperty函数,可以得到VID,PID,GUID,描述信息等等,现在初步看了下一些信息,对于复杂点的结构体信息还没仔细看,但没有得到能识别USB设备具体类型的,VID PID不行的,GUID也都是USB总线类的GUID,描述信息还稍微能看出点,比如U盘的描述信息就是"usb mass storage device",但同样的U盘在XP和win7下又不一样,XP下是usb mass storage device,到了win7下是中文“USB大容量存储设备”,描述信息也不能作为准确的判断依据。

想问下有做过USB相关驱动开发的了解这块的吗?

顺便问下USB的设备VID PID在内核中通过上述方法可以获取,但和注册表中usbstor下的有点区别,比如内核中得到的是USB\Vid_0951&Pid_1624&RV_2000(可能不准确),而注册表usbstor的ENUM下的值是USB\Vid_0951&Pid_1624\0019E0009E7EA99195170567,后面多了一串数字,并且拔了重插入,还是这一串,想问下这串数字的意义,这个是不是能够唯一识别一个USB设备,如果可以,在内核中怎么样获取?
...全文
326 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sparrow17 2014-06-23
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
[quote=引用 3 楼 zhangzheng0107 的回复:] [quote=引用 2 楼 zhao4zhong1 的回复:] WMI里面不知道有没有楼主要的信息。
WMI 不了解,可以看看。devcon搜了下,似乎和我这个关系不大。[/quote] 理论上,你能在设备管理器中看到的信息,用命令行版设备管理器devcon都能获取到。[/quote] 谢谢回复了,我自己再看看吧。
赵4老师 2014-06-19
  • 打赏
  • 举报
回复
引用 3 楼 zhangzheng0107 的回复:
[quote=引用 2 楼 zhao4zhong1 的回复:] WMI里面不知道有没有楼主要的信息。
WMI 不了解,可以看看。devcon搜了下,似乎和我这个关系不大。[/quote] 理论上,你能在设备管理器中看到的信息,用命令行版设备管理器devcon都能获取到。
sparrow17 2014-06-19
  • 打赏
  • 举报
回复
没有人吗,还是我说的不清楚,求大神指点。
sparrow17 2014-06-19
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
WMI里面不知道有没有楼主要的信息。
WMI 不了解,可以看看。devcon搜了下,似乎和我这个关系不大。
赵4老师 2014-06-18
  • 打赏
  • 举报
回复
WMI里面不知道有没有楼主要的信息。
赵4老师 2014-06-18
  • 打赏
  • 举报
回复
搜“devcon”试试看。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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