Пробую использовать коммуникационные порты минифильтров для связи с USER MODE.
Пытаюсь реализовать следующее:
В первом потоке принимаю сообщения из драйвера с помощью FilterGetMessage и складывваю их всех в список для обработки во втором потоке, после обработки в третьем потоке отправляю ответ с помощью FilterReplyMessage.
С одним подключением к порту, похоже эта схема не работает. Так как в случае получения нового сообщения в 1-м потоке и одновременно отправке в 3 ответа на другое сообщение(полученное раньше). Получаю ошибку 0x801f0020 (No waiter is present for the filter's reply to this message. ERROR_FLT_NO_WAITER_FOR_REPLY ).
Пошел другим путем, подумал что можно к порту подключиться из 3-го потока 2-й раз и через второе подключение слать ответы( есть параметр у FltCreateCommunicationPort __in LONG MaxConnections который это задает). Но при 2-х подключениях, при попытке драйвером отослать сообщение, драйвер зависает на функции FltSendMessage, а с другой стороны ничего не приходит, в конечном итоге сиситтема потихоньку умирает.
Видимо я чего-то недопонимаю, мало информации в интернете по этой теме. Помоги советами плиз....