UsbTreeView中设备驱动信息获取方法
UsbTreeView是一个专门解析USB设备描述符的工具,可以显示USB设备的一系列属性值。其中包括驱动路径,和inf配置文件路径,查询了一下,没找到可以获取这些驱动信息的SetupApi。好奇这个软件是怎么实现的,于是对它调用的API抓了一下包,找到了它的实现方法。
(1)驱动路径获取方法
可见驱动路径是通过读取注册表
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\services\usbccgp项的ImagePath子项来获取的。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\services是固定位置,usbccgp是设备的service属性值,可以通过调用SetupDiGetDeviceRegistryProperty传参SPDRP_SERVICE来获得。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\services下包含一些列的驱动服务子项,每项下面都有ImagePath这一子项,包含了驱动的路径。
(2)inf文件位置
inf文件位置是通过读取HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Class{4d36e972-e325-11ce-bfc1-08002be10318}\0009下的InfPath子项得到。
HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Class\是固定位置
{4d36e972-e325-11ce-bfc1-08002be10318}\0009是设备的DriverKey,可以通过调用SetupDiGetDeviceRegistryProperty传参SPDRP_DRIVER来获得。