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 です |
---|---|---|
FALSE | READ_REGISTER_X WRITE_REGISTER_X | ユーザー モード コードは、通常のメモリ アクセスを実行します。 |
TRUE | READ_PORT_X WRITE_PORT_X | サポートできません。 |
戻り値
DxgkCbMapMemory は、成功した場合STATUS_SUCCESSを返します。 それ以外の場合は、 Ntstatus.h で定義されているエラー コードのいずれかを返します。
注釈
PHYSICAL_ADDRESS データ型は Ntdef.h で定義されています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
対象プラットフォーム | デスクトップ |
Header | dispmprt.h (Dispmprt.h を含む) |
IRQL | PASSIVE_LEVEL |