Я разрабатываю драйвер фильтра под Windows. Драйвер является PnP-уведомлением для получения уведомлений устройства, а также создает управляющее устройство для связи с сопутствующей службой usermode через IOCTL.Как остановить драйвер фильтра Plug-and-Play по требованию?
Насколько я понимаю, время жизни водителя контролируется PnP-менеджером. Драйвер выгружается после обработки следующего уведомления устройства, учитывая, что к этому моменту никакие объекты устройства не принадлежат драйверу.
Что мне нужно сделать, так это остановить драйвер по требованию, а не при следующем приходе/выезде следующего устройства. Пока я не думаю, что так оно и должно работать, с другой стороны, я не вижу никакой логики, которая запрещает разгружать драйверы фильтров по требованию. Я исследовал отправку контроля STOP, и я не понимаю, как это можно обрабатывать в PnP-драйвере (работает только для устаревших драйверов).
Сейчас я собираюсь добавить специальный обработчик IOCTL, который закроет все объекты устройства. Но этого недостаточно, жизнь водителя управляется PnP-менеджером, поэтому мне нужно как-то «привлечь внимание» менеджера к моему драйверу. Любая помощь приветствуется!
Если вам интересно, мне нужно, чтобы драйвер был остановлен, поэтому для деинсталляции не требуется перезагрузка.