Создать процесс из драйвера - PullRequest
5 голосов
/ 16 июля 2009

Есть ли способ создать процесс в режиме пользователя из режима ядра на платформе Windows NT (XP-W7)?

РЕДАКТИРОВАТЬ: я должен установить только драйвер. Это специфика проекта.

Ответы [ 3 ]

5 голосов
/ 01 апреля 2010

Чтобы создать действительный процесс win32, драйвер должен связываться с CSRSS (что полностью недокументировано). В итоге я поставил в очередь APC пользовательского режима и выделил виртуальную память для кода APC в контексте существующего процесса win32 (этот код будет вызывать CreateProcess и выполнять эту работу).

Это хитрый способ, но он работает.

2 голосов
/ 16 июля 2009

Я не знаю более простого способа добиться этого. Но как насчет запуска службы Windows, которая превращает перекрывающий DeviceIoControl в ваш драйвер? По возвращении служба может проверить данные, полученные от водителя, и запустить соответствующее приложение.

0 голосов
/ 16 июля 2009

Это не может быть сделано напрямую - создание процесса win32 требует некоторой настройки в пользовательском режиме части CreateProcess, а не просто создания объекта процесса в режиме ядра.

Для запуска приложения в режиме пользователя вам понадобится код пользовательского режима - либо служба, либо приложение для настольного компьютера и т. Д.

...