Я создаю HW-симулятор для нашей команды водителей. Теперь симулятор разделен на 2 модуля:
Первый модуль запускается внутри драйвера, в режиме ядра, и именно там находится основной интерфейс между драйвером и HW-Simulator.
Второй модуль - это исполняемый код пользовательского режима, который генерирует данные для симулятора и переносит их в симулятор через вызовы DeviceIOControl
(под Windows API)
Мне нужно вот что: я хочу иметь возможность выполнять исполняемый файл пользовательского режима изнутри режима ядра. И я должен быть в состоянии сделать это относительно портативным способом. В настоящее время я работаю только на Windows, но это должно скоро измениться.
Более того, мне нужно иметь возможность общаться с кодом пользовательского режима через канал stdin
, чтобы перенастроить его и в конечном итоге закрыть.
Я нашел это:
Выполнение функции пространства пользователя из пространства ядра
но это относится только к ядру linux. Есть ли более портативная альтернатива? Или альтернатива Windows?
Можно ли сделать это в Windows, просто используя функции API ShellExecute / RunAs?
Примечание. Нам известны угрозы безопасности, связанные с вызовом кода пользовательского режима из пространства ядра. Но так как это предназначено только для использования в качестве тестовой среды и никогда не достигнет нашего кода выпуска, нас это не касается.