Я пытаюсь подключиться и ответить на файл драйвера минифильтра. Для связи я использую это
hr = FilterConnectCommunicationPort(MyPortName,0,NULL, 0,NULL, &port);
completion = CreateIoCompletionPort(port,NULL,0,1);
FilterGetMessage для получения сообщения я использую это:
hr = FilterReplyMessage(context.Port(PFILTER_REPLY_HEADER)&replyMessage.ReplyHeader,My_REPLY_MESSAGE_SIZE);
Эти функции работают нормально, но некоторое время FilterReplyMessage отнимает время и выдает ошибку Error = 0x801F0020
Поскольку это случайная проблема, мы не можем выяснить, что происходит.
Нашел решение. Установите тайм-аут как последний параметр в FltSendMessage в коде драйвера. Это заставит его ждать только до истечения времени ожидания, а не бесконечно, пока клиент не отправит ответ.
Других решений пока нет …