Изменить установленный драйвер устройства

Я пытаюсь изменить установленный драйвер для устройства с помощью SetupAPI. Драйвер уже присутствует на ПК, просто в данный момент не выбран.

В частности, я пытаюсь отменить установку стороннего драйвера для составного USB-устройства и вместо этого установить драйвер Windows по умолчанию.

У меня это уже почти работает следующим образом: во-первых, найдите устройство с помощью

SetupDiGetClassDevs
SetupDiEnumDeviceInfo
SetupDiGetDeviceInstanceId

найти устройство.

Затем найдите драйвер составного USB-устройства по умолчанию, который я хочу установить, используя

SetupDiBuildDriverInfoList
SetupDiEnumDriverInfo
SetupDiGetDriverInfoDetail

Как только я нашел водителя, я звоню

SetupDiSetSelectedDriver
SetupDiInstallDevice

Это фактически переключает драйвер обратно, что можно наблюдать в диспетчере устройств.

Однако сторонний драйвер поместил устройство в собственную группу/категорию, и это изменение не отменяется при использовании моего подхода.

Ручной выбор стандартного составного драйвера USB-устройства в диспетчере устройств действительно восстанавливает категорию устройств обратно в USB-контроллеры, поэтому я думаю, что мой процесс установки драйвера не завершен. Что я могу упустить?


person Timbo    schedule 14.02.2017    source источник


Ответы (1)


Оказывается, рабочая последовательность установки

SetupDiSetSelectedDevice
SetupDiSetSelectedDriver
InstallSelectedDriver // From newdev.dll, not in a public header
person Timbo    schedule 14.02.2017