Отправка событий в службу Windows из режима ядра - PullRequest
1 голос
/ 11 сентября 2010

Я пишу программный продукт, состоящий из драйвера режима ядра и службы Windows в пользовательском режиме.Драйвер ядра должен уведомлять службу о различных событиях и информации, которую затем будет обрабатывать служба.

Мой вопрос таков: как лучше всего настроить эту связь?Я знаю, что можно получить сообщение от ядра, используя минифильтр и FilterGetMessage (), но это потребует опроса ядра для новых данных.Мне нужна система, которая позволяет ядру уведомлять службу, когда появляются новые данные для обработки.

В качестве примечания, сама служба использует шаблон потребителя производителя, поэтому будет поток, посвященный только получению данных из ядра и помещению в очередь для обработки другого набора рабочих потоков.Любые мысли по поводу этого дизайна также приветствуются.

1 Ответ

2 голосов
/ 11 сентября 2010

Почему бы просто не использовать ReadFile или DeviceIoControl на стороне службы? Простой IRP на стороне водителя, завершите его, когда у вас есть что сообщить. Службе потребуется ускорить поток или использовать обратный вызов завершения ввода-вывода. И CancelIo, чтобы отменить блокирующий вызов при выходе из службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...