次の方法で共有


DXGKCB_ALLOCATEPAGESFORMDLコールバック関数 (d3dkmddi.h)

DXGKCB_ALLOCATEPAGESFORMDL は、IOMMU の論理アドレス空間にマップされるメモリ記述子リスト (MDL) の物理メモリ ページを割り当てます。

構文

DXGKCB_ALLOCATEPAGESFORMDL DxgkcbAllocatepagesformdl;

NTSTATUS DxgkcbAllocatepagesformdl(
  [in]     IN_CONST_HANDLE hAdapter,
  [in/out] INOUT_PDXGKARGCB_ALLOCATEPAGESFORMDL pAllocatePagesForMdl
)
{...}

パラメーター

[in] hAdapter

ディスプレイ アダプターのハンドル。

[in/out] pAllocatePagesForMdl

MDL にページを割り当てる引数を含む DXGKARGCB_ALLOCATEPAGESFORMDL 構造体へのポインター。

戻り値

操作が成功した場合は、STATUS_SUCCESSを返します。 それ以外の場合は、適切な NTSTATUS エラー コードを返します。

備考

このコールバック関数は、MmAllocatePagesForMdl 関数と同等の Windows グラフィックス ポート ドライバー関数です。

DXGKCB_XXX 関数は、Dxgkrnlによって実装されます。 このコールバック関数を使用するには、DXGKARGCB_ALLOCATEPAGESFORMDL の適切なメンバーを設定し、DXGKRNL_INTERFACEを介して DxgkCbAllocatePagesForMdl 呼び出します。

ページング操作中に GPU によってアクセスされるすべてのメモリ、または GpuMmu 経由でマップされるすべてのメモリを IOMMU にマップする必要があります。 Dxgkrnl は、1 つの手順で割り当てと再マップを許可するコールバックをカーネル モード ドライバーに提供します。

手記

DXGKCB_ALLOCATEPAGESFORMDL の呼び出しは 4 GB PAGE_SIZE MDL 制限に制限され、Dxgkrnl は常に、mmAllocatePagesForMdlEx関数 内部呼び出しで MM_ALLOCATE_FULLY_REQUIRED フラグを指定します。 また、ドライバーはメモリをロックしないでください。 Dxgkrnl がドライバーのロックされたページを管理、メモリが再マップされると、ドライバーに提供されるページの論理アドレスが物理アドレスと一致しなくなる可能性があります。

詳細については、IOMMU ベースの GPU 分離 を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1803 (WDDM 2.4)
ヘッダー d3dkmddi.h
IRQL PASSIVE_LEVEL

関連項目

DXGKARGCB_ALLOCATEPAGESFORMDL

DXGKCB_FREEPAGESFROMMDL

DXGKRNL_INTERFACE