Есть ли способ создать процесс пользовательского режима из режима ядра на платформе Windows NT (XP-W7)?Создать процесс от драйвера
EDIT: Я должен установить только драйвер. Это конкретный проект.
Есть ли способ создать процесс пользовательского режима из режима ядра на платформе Windows NT (XP-W7)?Создать процесс от драйвера
EDIT: Я должен установить только драйвер. Это конкретный проект.
Чтобы создать корректный процесс win32, драйвер должен взаимодействовать с CSRSS (что полностью недокументировано). Таким образом, я оказался в очереди на APC пользовательского режима и выделял виртуальную память для кода APC в контексте существующего процесса win32 (этот код вызовет CreateProcess и выполнит задание).
Это сложный путь, но он работает.
Я не знаю более простой способ достичь этого. Но как насчет запуска службы Windows, которая делает перекрывающийся DeviceIoControl в вашем драйвере? При возврате служба может проверить данные, полученные от драйвера, и запустить соответствующее приложение.
Я бы сказал, что это правильное решение. Выпустите обратный IRP из службы, дайте драйверу завершить работу, когда он начнет процесс пользовательского режима. – 2009-07-16 06:37:12
Спасибо за предложение, но я не могу запустить свою службу (если только служба будет установлена и запущена из режима ядра). –
@Sergius: Вы все равно должны установить драйвер. Вы можете установить службу, используя тот же файл INF. –
Это невозможно сделать непосредственно. Создание процесса win32 требует некоторой настройки части пользовательского режима CreateProcess, а не просто создания объекта процесса в режиме ядра.
Для запуска приложения пользовательского режима вам нужен код пользовательского режима - либо служба, приложение для настольных компьютеров, либо так далее.
Я подумываю о том, чтобы вводить поток с моим собственным кодом режима пользователя в какой-то пользовательский режим от драйвера ... –
Посмотрите на http://www.codeproject.com/KB/system/KernelExec.aspx. Интересно ... –