Re[2]: Использование FltCreateCommunicationPort
От: chijo Россия  
Дата: 27.07.10 15:19
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

AF>Здравствуйте, chijo, Вы писали:


C>>Пробую использовать коммуникационные порты минифильтров для связи с USER MODE.

C>>Пытаюсь реализовать следующее:
C>>В первом потоке принимаю сообщения из драйвера с помощью FilterGetMessage и складывваю их всех в список для обработки во втором потоке, после обработки в третьем потоке отправляю ответ с помощью FilterReplyMessage.

C>>С одним подключением к порту, похоже эта схема не работает. Так как в случае получения нового сообщения в 1-м потоке и одновременно отправке в 3 ответа на другое сообщение(полученное раньше). Получаю ошибку 0x801f0020 (No waiter is present for the filter's reply to this message. ERROR_FLT_NO_WAITER_FOR_REPLY ).

C>>Видимо я чего-то недопонимаю, мало информации в интернете по этой теме. Помоги советами плиз....

AF>Покажите в коде как вы в драйвере отправляете сообщение? Может на самом деле не ждете ответа из юзермода



Не... Жду :

    status = FltSendMessage( ScannerData.Filter,
        &ScannerData.ClientPort,
        notification,
        sizeof(SCANNER_NOTIFICATION),
        notification,
        &replyLength,
        NULL );

В одном потоке все работает....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.