Всем добрый день.
Эдакий общий вопрос: каким образом корректно отключать фильтр от драйвера, который на каждый идущий нижележащему драйверу IRP-пакет цепляет свою процедуру завершения. В моём случае пишу фильтр для Communication Ports, присоединяю и отключаю его динамически средствами SCM-менеджера. Однако если выгрузить фильтр до того, как будут завершены пакеты STATUS_PENDING (например, чтение COM-порта), а затем закрыть приложение, открывшее этот порт, в процессе cancelling этих пакетов происходит понятно что

Так понимаю, что при выгрузке фильтра нужно каким-то образом обнулить указатель на процедуру завершения у всех незавершённых пакетов?
Хотелось бы услышать мнения и советы.
Спасибо.
Да, ещё добавлю. Всё дело у меня реализовано так: отдельный драйвер, который создаёт (если ещё не создан) и присоединяет/отсоединяет фильтр для нужного порта через свои управляющие коды. В процессе DriverUnload вызываю IoDetachDevice для созданных фильтров. NT4 legacy driver.
Заюзал поиск. Я не одинок в этом вопросе

В общем, вопрос снимается.