次の方法で共有


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

関連項目

MEMORY_CACHING_TYPE