次の方法で共有


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

KMD の DxgkDdiCreateMemoryBasis 関数は、ダーティ ビット追跡中に操作される割り当てを表すメモリ範囲のコレクションのハンドルを作成します。

構文

DXGKDDI_CREATEMEMORYBASIS DxgkddiCreatememorybasis;

HANDLE DxgkddiCreatememorybasis(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_CREATEMEMORYBASIS pArgs
)
{...}

パラメーター

hAdapter

[in]ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 KMD は以前、DxgiDdiAddDevice 関数の出力パラメーター ミニポートDeviceContext で Dxgkrnl するために、このハンドルを提供しました。

pArgs

[in]作成される基礎の情報を含む DXGKARG_CREATEMEMORYBASIS 構造体へのポインター。

戻り値

DxgkDdiCreateMemoryBasis は、範囲のコレクションを追跡するためのハンドルを KMD の参照に返します。 KMD は、dxgkDdiDestroyMemoryBasis などの後続のコマンドで、この情報を基礎の情報に変換できる必要があります。

備考

VRAM での変更操作の追跡は、連続してバックアップされない可能性がある割り当てに対するものです。 したがって、ダーティ ビットの追跡で表される物理アドレスは、操作対象の割り当てを表す範囲のコレクションで構成されます。 DxgkDdiCreateMemoryBasis は、これらの範囲を追跡するための KMD の参照へのハンドルを返します。

KMD は、次のインバリアントに依存できます。

  • 範囲の各範囲について、SegmentOffset と (SegmentOffset + SizeInBytes - 1) の両方が、SegmentIdによって参照されるセグメントの有効なアドレスを表します。

  • すべての 範囲 はペアごとの不整合です。つまり、2 つの範囲間の交差は常に null です。

また、作成されたメモリベースが特定のダーティ トラッキング DDI で使用されている場合、SegmentOffsetSizeInBytes が特定のページ配置を考慮することも一般的です。 これらの値は、これらの DDI の参照ページで説明されており、常に DXGK_DIRTY_BIT_TRACKING_SEGMENT_CAPS::P ageSizeの倍数です。

Dxgkrnl 、それ以外の場合、範囲 または関連する保証のコレクション内のアドレスの順序については保証されません。

詳細については、「ダーティ ビットトラッキング を参照してください。

必要条件

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

関連項目

DXGKARG_CREATEMEMORYBASIS

DxgkDdiDestroyMemoryBasis