PDD_MAPMEMORY
コールバックシグネチャ
DWORD PDD_MAPMEMORY(
DD_MAPMEMORYDATA* param0
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| param0 | DD_MAPMEMORYDATA* | メモリのマップまたはマップ解除の操作に関する詳細を格納した DD_MAPMEMORYDATA 構造体を指します。 |
公式ドキュメント
DdMapMemory コールバック関数は、フレームバッファーのうちアプリケーションが変更可能な部分を、指定されたプロセスのユーザーモードアドレス空間にマップします。または、メモリのマップを解除します。
戻り値
DdMapMemory は、次のコールバックコードのいずれかを返します。
解説(Remarks)
DdMapMemory は、最初の DdLock 呼び出しの前に、メモリのマップを実行するために呼び出されます。lpMapMemory が指す DD_MAPMEMORYDATA 構造体の fpProcess メンバーでドライバーが返したハンドルは、そのドライバーに対して行われるすべての DdLock 呼び出しに渡されます。
DdMapMemory は、最後の DdUnlock 呼び出しが行われた後に、メモリのマップを解除するためにも呼び出されます。
ドライバーのクラッシュを防ぐため、ドライバーはアプリケーションによって変更されてはならないフレームバッファーの部分をマップしてはなりません。
ディスプレイドライバーは、メモリのマップまたはマップ解除を実行するために ビデオミニポートドライバー を呼び出す必要があります。メモリをマップするための同期要求をビデオミニポートドライバーに送信するには、ディスプレイドライバーは GDI 関数 EngDeviceIoControl を IOCTL_VIDEO_SHARE_VIDEO_MEMORY または IOCTL_VIDEO_MAP_VIDEO_MEMORY とともに呼び出します。メモリのマップを解除するには、ディスプレイドライバーは IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY または IOCTL_VIDEO_UNMAP_VIDEO_MEMORY をビデオミニポートドライバーに送信します。詳細については、Communicating IOCTLs to the Video Miniport Driver を参照してください。
DdMapMemory を無効化された PDEV に対して呼び出せるのは、メモリのマップを解除する場合のみです。PDEV の無効化と有効化は、ディスプレイドライバーの DrvAssertMode 関数を呼び出すことで行われます。詳細については、Managing PDEVs を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)