DXGKCB_MAP_MEMORY コールバック関数 (dispmprt.h)
DxgkCbMapMemory 関数は、変換された物理アドレスの範囲 (ディスプレイ アダプターに割り当てられたメモリ リソースに関連付けられている) をシステム空間またはユーザー モード プロセスの仮想アドレス空間にマップします。
構文
DXGKCB_MAP_MEMORY DxgkcbMapMemory;
NTSTATUS DxgkcbMapMemory(
[in] HANDLE DeviceHandle,
[in] PHYSICAL_ADDRESS TranslatedAddress,
[in] ULONG Length,
[in] BOOLEAN InIoSpace,
[in] BOOLEAN MapToUserMode,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *VirtualAddress
)
{...}
パラメーター
[in] DeviceHandle
ディスプレイ アダプターを表すハンドル。 ディスプレイ ミニポート ドライバーは、DxgkDdiStartDeviceに渡された DXGKRNL_INTERFACE 構造体の DeviceHandle メンバーで、このハンドルを以前に取得しました。
[in] TranslatedAddress
マップするメモリ範囲のベース変換された物理アドレス。 ディスプレイ ミニポート ドライバーは、以前に DxgkCbGetDeviceInformation呼び出すことによってこのアドレスを取得しました。
[in] Length
マップする範囲のサイズ (バイト単位)。
[in] InIoSpace
範囲が I/O 空間 (TRUE) またはメモリ領域 (FALSE) 内にあるかどうかを指定するブール値。
[in] MapToUserMode
範囲をユーザー モード空間またはシステム空間のどちらにマップするかを指定するブール値。 TRUE 場合、範囲は現在のプロセスの (ユーザー モード) 仮想アドレス空間にマップされます。 FALSE 場合、範囲はシステム空間にマップされます。 inIoSpace が TRUE 場合、このパラメーターは無視されます。
[in] CacheType
マップされた範囲のキャッシュ動作を指定する MEMORY_CACHING_TYPE 列挙子。
[out] VirtualAddress
マップされた範囲の先頭のアドレスを受け取る変数へのポインター。 マップされた範囲にアクセスする方法は、InIoSpace の値と MapToUserMode によって異なります。 次の表は、マップされた範囲にアクセスするさまざまな方法をまとめたものです。
InIoSpace の値 | MapToUserMode が FALSE | MapToUserMode が TRUE |
---|---|---|
偽 | READ_REGISTER_X WRITE_REGISTER_X | ユーザー モード コードは、通常のメモリ アクセスを実行します。 |
真 | READ_PORT_X WRITE_PORT_X | 無理です。 |
戻り値
DxgkCbMapMemory 成功した場合、STATUS_SUCCESSが返されます。 それ以外の場合は、Ntstatus.hで定義されているエラー コードのいずれかを返します。
備考
PHYSICAL_ADDRESS データ型は、Ntdef.hで定義されています。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | dispmprt.h (Dispmprt.h を含む) |
IRQL | PASSIVE_LEVEL |