次の方法で共有


DXGKARGCB_MAP_PHYSICAL_MEMORY構造体 (d3dkmddi.h)

DXGKARGCB_MAP_PHYSICAL_MEMORY 構造体には、CPU から参照可能な仮想アドレスを基になる物理メモリにマップするために、DXGKCB_MAPPHYSICALMEMORY コールバック関数によって使用される情報が含まれています。

構文

typedef struct _DXGKARGCB_MAP_PHYSICAL_MEMORY {
  [in]     HANDLE           hPhysicalMemoryObject;
  [in]     DXGK_ACCESS_MODE AccessMode;
  [in/out] SIZE_T           Offset;
  [in]     SIZE_T           Size;
  [out]    void             *pMappedAddress;
} DXGKARGCB_MAP_PHYSICAL_MEMORY;

メンバーズ

[in] hPhysicalMemoryObject

マップする基になる物理ページを記述する物理メモリ オブジェクト。 このオブジェクトは、DXGKCB_CREATEPHYSICALMEMORYOBJECTの前の呼び出しで作成されました。

[in] AccessMode

マッピングを行う必要があるアクセス モード (ユーザー モードまたはカーネル モード) を記述する DXGK_ACCESS_MODE 列挙値。

[in/out] Offset

入力として、物理メモリ オブジェクトの先頭からのオフセットをバイト単位で指定します。 出力として、要求されたデータが存在するマップされたベース アドレスの先頭からのオフセットをバイト単位で指定します。 詳細については、「解説」を参照してください。

[in] Size

入力として、マップされた領域の要求されたサイズをバイト単位で指定します。 出力として、実際にマップされたサイズをバイト単位で指定します。 詳細については、「解説」を参照してください。

[out] pMappedAddress

DXGKCB_MAPPHYSICALMEMORYの呼び出しが成功すると、これは基になる物理メモリ マッピングへのポインターです。 丸めまたはアラインメントが必要な場合、マップされたメモリ範囲の先頭がドライバーによって要求されたオフセットと正確に等しくない可能性があります。 その結果、Offset の出力値は、ドライバーによって要求されたデータに対するベース アドレスからのオフセットを参照します。 つまり、ActualAddress = BaseAddress + Offset です。

備考

OffsetSize は、入力パラメーターと出力パラメーターの両方です。 これらは入力として、呼び出し元によって要求される物理メモリの領域を記述します。 出力時に、これらは実際にマップされたビューを記述します。 これは、対応する物理メモリにマップされているアドレスが、要求されたオフセットに正確に存在しない可能性があるためです。 呼び出し元によって要求された実際のデータは、pMappedAddress + Offsetと等しくなります。 マップされた仮想アドレス範囲のサイズは、Sizeの出力値になります。これは、要求されたサイズよりも大きくなる可能性があります。

詳細については、IOMMU DMA の再マップ を参照してください。

必要条件

要件 価値
サポートされる最小サーバー Windows Server 2022 (WDDM 2.9)
ヘッダー d3dkmddi.h

関連項目

DXGK_ACCESS_MODE

DXGKCB_MAPPHYSICALMEMORY