2009-07-16 14 views
5

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

EDIT: Я должен установить только драйвер. Это конкретный проект.

+0

Я подумываю о том, чтобы вводить поток с моим собственным кодом режима пользователя в какой-то пользовательский режим от драйвера ... –

+0

Посмотрите на http://www.codeproject.com/KB/system/KernelExec.aspx. Интересно ... –

ответ

5

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

Это сложный путь, но он работает.

2

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

+1

Я бы сказал, что это правильное решение. Выпустите обратный IRP из службы, дайте драйверу завершить работу, когда он начнет процесс пользовательского режима. – 2009-07-16 06:37:12

+0

Спасибо за предложение, но я не могу запустить свою службу (если только служба будет установлена ​​и запущена из режима ядра). –

+0

@Sergius: Вы все равно должны установить драйвер. Вы можете установить службу, используя тот же файл INF. –

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^