次の方法で共有


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 の場合、範囲はシステム空間にマップされます。 InIoSpaceTRUE の場合、このパラメーターは無視されます。

[in] CacheType

マップされた範囲のキャッシュ動作を指定する MEMORY_CACHING_TYPE 列挙子。

[out] VirtualAddress

マップされた範囲の先頭のアドレスを受け取る変数へのポインター。 マップされた範囲にアクセスする方法は、 InIoSpaceMapToUserMode の値によって異なります。 次の表は、マップされた範囲にアクセスするさまざまな方法をまとめたものです。

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

こちらもご覧ください

MEMORY_CACHING_TYPE