Разработка драйвера: удаление драйвера Windows - PullRequest
0 голосов
/ 24 сентября 2011

Я взламываю виртуальный драйвер HID и по какой-то причине не могу отключить и удалить драйвер в диспетчере устройств.

devcon.exe remove также выдает ошибку.При удалении устройства в диалоговом окне игровых контроллеров на панели управления мне нужно перейти в диспетчер устройств для удаления устройства.

Есть идеи, что может быть причиной этого?Что может заставить Windows думать, что она не может удалить драйвер?


Небольшое обновление.

Перевод компьютера в режим ожидания позволил мне удалить устройство.

УдалениеЧасти дескриптора отчета HID (такие как отчет мультитач, отчет мыши и отчет клавиатуры, ни один из которых я не использовал) также исправили проблему.

Однако я хотел бы понять, что именно пошло не так.Что заблокировало драйвер, чтобы его нельзя было удалить?

Ответы [ 2 ]

0 голосов
/ 22 июня 2017

Это драйвер режима ядра, поэтому его нельзя «просто» отключить. Для успешной выгрузки драйвера диспетчер ввода-вывода должен отправить запрос на очистку, когда нет других дескрипторов, ожидающих обработки или закрытия.

И если это драйвер PnP, менеджер PnP должен отправить IRP_MJ_SHUTDOWN запрос менеджеру ввода-вывода, чтобы менеджер ввода-вывода мог запустить процедуру обратного вызова выгрузки.

Одним из способов принудительного его отключения может быть отладка ядра машины. Делая это, вы можете видеть, какие процессы отправляют запросы этому драйверу, а затем вручную выгружать драйвер (хотя это может иметь серьезные последствия, поскольку все эти открытые дескрипторы, которые удерживают драйвер открытым, должны быть закрыты диспетчером ввода-вывода) *

0 голосов
/ 10 октября 2011

Любой процесс, который может использовать драйвер, может держать его открытым. Один из способов убедиться в этом - использовать Process Explorer от Sysinternals и использовать команду «Найти» в меню «Ручки» для поиска имен любых библиотек DLL, связанных с драйвером.

Таким образом, для многих драйверов отключение связанных процессов легко, но это может быть более сложным для драйвера, связанного с файловой системой. Например, даже если вы закроете все карты или монтирования на виртуальном устройстве, любые процессы Windows Explorer (включая оболочку входа в систему) могли загрузить драйвер. Снова, PROCEXP полезен для выяснения некоторых из этого ...

...