私は Windows CE デバイス ドライバーに ioctl を実装しています。これは、アプリケーション メモリの大きなチャンクへのポインターを取得して、DeviceIoControl へのアプリケーション呼び出しを通じて開始された非同期 I/O を実行します。
MapCallerPtr() を使用する場合、XXX_IOControl 関数が戻ると、ポインターはマップ解除されます。ポインターが IST で使用されると、マップされなくなり、クラッシュが発生します。
XXX_IOControl への呼び出しの最後を超えてポインターをマップする最良の方法は何ですか? アプリケーションは、ドライバーがメモリの処理を終了したという通知をドライバーから受け取るまで、メモリが有効なままであることを保証します。
これは Windows CE 5.0 上にあります。