1

我正在尝试使用 SetupAPI 更改设备的已安装驱动程序。驱动程序已存在于 PC 上,只是当前未选中。

更具体地说,我正在尝试撤消为 USB 复合设备安装第三方驱动程序,并安装默认的 Windows 驱动程序。

我已经让它几乎像这样工作了:首先,找到使用的设备

SetupDiGetClassDevs
SetupDiEnumDeviceInfo
SetupDiGetDeviceInstanceId

找到设备。

接下来,找到我要安装的默认 USB 复合设备驱动程序

SetupDiBuildDriverInfoList
SetupDiEnumDriverInfo
SetupDiGetDriverInfoDetail

找到司机后,我打电话

SetupDiSetSelectedDriver
SetupDiInstallDevice

这实际上确实将驱动程序切换回来,正如在设备管理器中所观察到的那样。

但是,第三方驱动程序将设备放入自己的组/类别中,并且使用我的方法时不会撤消此更改。

在设备管理器中手动选择标准 USB 复合设备驱动程序确实会将设备类别恢复为 USB 控制器,这就是为什么我认为我的驱动程序安装过程不完整的原因。我可能会错过什么?

4

1 回答 1

0

原来工作的安装顺序是

SetupDiSetSelectedDevice
SetupDiSetSelectedDriver
InstallSelectedDriver // From newdev.dll, not in a public header
于 2017-02-14T11:37:49.547 回答