Связь между режимом ядра и приложением пользовательского режима - PullRequest
5 голосов
/ 09 февраля 2011

Я создал драйвер выноски WFP, который работает в режиме ядра. Теперь я пытаюсь выяснить, как установить связь между этим драйвером и моим GUI-приложением, которое работает в пользовательском режиме. Есть идеи?

Именно то, что я хочу, выглядит примерно так:

  1. Драйвер выноски обнаруживает входящее соединение через порт 4444 (это не часть моего вопроса)
  2. Драйверы отправляют сообщение в приложение пользовательского режима.
  3. Приложение показывает уведомление пользователю и спрашивает, следует ли нам принять / заблокировать соединение.
  4. Приложение в режиме пользователя отправляет ответ пользователя обратно драйверу выноски.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 12 февраля 2011

Я согласен с LordDoskias. Вам необходимо создать объект устройства и сделать его доступным для области Win32. Затем вы можете использовать CreateFile, ReadFile, WriteFile и уже упомянутые DeviceIoControl для отправки запросов.

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

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

3 голосов
/ 11 февраля 2011

Проверьте этот вызов API - DeviceIoControl

По сути, вам нужно зарегистрировать драйвер в диспетчере объектов, затем ваше приложение с графическим интерфейсом сможет открыть его и отправлять различные команды и данные (для этого есть буферы), а затем вам нужно отправить несколько пользовательских Код IOCTL (сверьтесь с руководством WDK).

...