如何在内核中识别USB设备的类型
最近在做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设备,如果可以,在内核中怎么样获取?