Windows 10 (64 ビット) でカーネル モード ドライバーを作成しています。その主な目的は DMA から読み取ることです。メモリのブロックをカーネル空間からユーザー空間に割り当てられたバッファーにコピーする代わりに、何らかの方法でアドレスをユーザー空間に公開し (もちろん物理アドレスではありません)、メモリ コピー操作を節約できます。
おそらく次のようなものです:
連続した物理メモリのブロックを割り当てます (そして物理アドレスをカーネル空間の仮想アドレスにマッピングします)。
カーネル空間の仮想アドレスをユーザー空間の仮想アドレスにマッピングします。
ところで、カーネル空間は 1 つしかなく、システムで実行中のプロセスと同じ数のユーザー空間があるため (正しいですか?)、取得するには、呼び出しプロセスへの何らかのハンドルを使用する必要があります。適切なプロセスの仮想アドレス...
御時間ありがとうございます!