Windows系统USB相关注册表路径功能说明
usbflags
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags
这个路径下会把所以有USB设备按PID、VID和BCDDevice组成一段字符串来作为子目录存在:,如下图:
040360100500中的0403是USB设备描述符的VID,6010是USB设备描述符的PID,0500是设备描述符中的BCDDevice,也是硬件ID中的Rev
osvc:REG_BINARY16位,指定了是否获取微软定义的USB描述符,即Microsoft OS Descriptors for USB Devices。详见https://www.usbzh.com/article/detail-625.html 或 https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/microsoft-defined-usb-descriptors
IgnoreHWSerNum:REG_BINARY8位,指定是否忽略设备描述符中的iSerialNumber,00是禁用。01是忽略
ResetOnResume:REG_BINARY16位,指定系统休眠唤醒之后,是否复位设备。0x0001表示复位,0x0000默认。
USB设备驱动信息
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
该路径下是系统中所有设备分类,如所有的USB设备都会在
Class=USB
ClassGuid={36FC9E60-C465-11CF-8056-444553540000}
分类下。
所有USB设备驱动中的INF文件中都定了该ClassGuid分类,设备管理器以这个GUID来进行设备归类。
更多参见:http://www.pnpon.com/article/detail-214.html
该注册表路径下显示了设备的基本驱动信息。
当然,也可以对USB设备使用其它的GUID,如系统定义的SYSTEM,也可以自己定义一个GUID,这些都会显示的设备管理器下。
这个ClassGuid就是设备管理吕中的通用总线控制器分类:
USB设备的CLASSGUID属性都会是这个值。
USB设备实例名(DeviceInstance)链接名
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}
都有USB设备都会注册一个GUID为{a5dcbf10-6530-11d2-901f-00c04fb951ed}的名称,通过SetupAPI可以通过该guid枚举系统中所有的USB设备。
该注册表指定了设备的实例名。实例名在系统中是惟一的,代表了当前的设备。设备重新上下电或者重启,这个实例名可能会变化。
参考代码可见:http://www.usbzh.com/article/detail-111.html 只需要替换GUID即可。
其它设备GUID名可见: http://www.pnpon.com/article/detail-146.html
USB设备硬件ID分类
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
通过设备的硬件ID来进行USB设备分类,其注册表信息代表了USB设备的详细信息。如查有多个PID、VID等相同的设备,会有多个实例名。
USB存储设备
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
系统中存在的USB存储类设备,如U盘,CDROM等。