ドライバーチーム用のハードウェアシミュレーターを構築しています。現在、シミュレーターは 2 つのモジュールに分割されています。最初のモジュールはドライバー内でカーネル モードで実行され、ドライバーと HW-Simulator 間のメイン インターフェイスがここにあります。DeviceIOControl
2番目のモジュールは、シミュレーター用のデータを生成し、 (Windows APIの下で)への呼び出しを介してシミュレーターに転送する実行可能なユーザーモードコードです。
私の必要性は次のとおりです。カーネルモード内からユーザーモードの実行可能ファイルを実行できるようにしたいです。そして、これを比較的移植性の高い方法で実行できるようにする必要があります。現在、私は Windows でのみ実行していますが、これはすぐに変更されるはずです。さらに、stdin
再構成して最終的に閉じるために、パイプを介してユーザーモードコードと通信できる必要があります。
私はこれを見つけました: カーネル空間からユーザー空間関数を実行する
ただし、これは linux-kernel にのみ関連します。よりポータブルな代替手段はありますか? またはWindowsの代替?
ShellExecute/RunAs API 関数を使用するだけで Windows でこれを実行できますか?
注: カーネル空間からユーザー モード コードを呼び出すことに伴うセキュリティ リスクを認識しています。ただし、これはテスト環境としてのみ使用することを意図しており、リリース コードに到達することはないため、心配する必要はありません。