Как запустить программу пользовательского режима из режима ядра в Windows

У меня есть драйвер (режим ядра) (KMDF) и форма пользовательских настроек. мне нужно запустить действие из кода драйвера и получить настройки. Итак, как мне запустить эту программу пользовательского режима из ядра в операционной системе Windows?


person Eswar Yaganti    schedule 19.03.2015    source источник
comment
Это выглядит немного странно. Зачем нужно запускать форму настроек из драйвера? Программа пользовательского режима должна запускаться стандартным образом, когда пользователь ее запускает.   -  person Alex F    schedule 19.03.2015
comment
@AlexFarber Я хочу показать всплывающее окно в записи драйвера и вернуть результат.   -  person Eswar Yaganti    schedule 19.03.2015
comment
DriverEntry может выполняться во время загрузки или перед входом пользователя в систему. Во всяком случае, я никогда не видел такой реализации. Я думаю, вам нужно написать программу пользовательского режима, которая прослушивает события драйвера и при необходимости показывает некоторый пользовательский интерфейс.   -  person Alex F    schedule 19.03.2015


Ответы (2)


Лучший способ заставить драйвер что-то делать в пользовательском режиме — заставить его взаимодействовать с компонентом пользовательского режима, который может выполнять эту работу. Таким образом, вы делаете что-то вроде службы пользовательского режима, которая открывает канал для драйвера, а затем, когда драйверу нужно что-то сделать (например, запустить процесс), он может отправить сообщение службе.

Найдите в osronline инвертированную модель вызова для получения дополнительной информации или посмотрите документацию по API FltSendMessage, если вы создаете мини-фильтр.

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

person lordjeb    schedule 23.03.2015

Просто вы не можете, если вы не используете странные недокументированные трюки, такие как APC, которые могут вызвать много проблем несовместимости; просто поместите свое приложение в автоматический запуск (например, CurrentVersion\Run) и отправьте IRP драйверу с данными, которые вам нужно отправить.

person julio uniqum    schedule 19.03.2015