DXGKARG_BUILDPAGINGBUFFER構造体 (d3dkmddi.h)
DXGKARG_BUILDPAGINGBUFFER構造体は、メモリ転送操作で使用するページング バッファーを構築する DxgkDdiBuildPagingBuffer** コールバックのパラメーターを記述します。
構文
typedef struct _DXGKARG_BUILDPAGINGBUFFER {
VOID *pDmaBuffer;
UINT DmaSize;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
DXGK_BUILDPAGINGBUFFER_OPERATION Operation;
UINT MultipassOffset;
union {
struct {
HANDLE hAllocation;
UINT TransferOffset;
SIZE_T TransferSize;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Source;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Destination;
DXGK_TRANSFERFLAGS Flags;
UINT MdlOffset;
} Transfer;
struct {
HANDLE hAllocation;
SIZE_T FillSize;
UINT FillPattern;
struct {
UINT SegmentId;
LARGE_INTEGER SegmentAddress;
} Destination;
} Fill;
struct {
HANDLE hAllocation;
DXGK_DISCARDCONTENTFLAGS Flags;
UINT SegmentId;
PHYSICAL_ADDRESS SegmentAddress;
} DiscardContent;
struct {
UINT SegmentId;
PHYSICAL_ADDRESS PhysicalAddress;
} ReadPhysical;
struct {
UINT SegmentId;
PHYSICAL_ADDRESS PhysicalAddress;
} WritePhysical;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
PMDL pMdl;
DXGK_MAPAPERTUREFLAGS Flags;
ULONG MdlOffset;
} MapApertureSegment;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
PHYSICAL_ADDRESS DummyPage;
} UnmapApertureSegment;
struct {
HANDLE hAllocation;
UINT TransferOffset;
SIZE_T TransferSize;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Source;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Destination;
DXGK_TRANSFERFLAGS Flags;
UINT SwizzlingRangeId;
UINT SwizzlingRangeData;
} SpecialLockTransfer;
struct {
HANDLE hAllocation;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
PVOID VirtualAddress;
D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
} Destination;
} InitContextResource;
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL TransferVirtual;
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL FillVirtual;
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE UpdatePageTable;
DXGK_BUILDPAGINGBUFFER_FLUSHTLB FlushTlb;
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES CopyPageTableEntries;
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION UpdateContextAllocation;
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY NotifyResidency;
DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE SignalMonitoredFence;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
DXGK_ADL Adl;
DXGK_MAPAPERTUREFLAGS Flags;
ULONG AdlOffset;
PVOID CpuVisibleAddress;
} MapApertureSegment2;
DXGK_BUILDPAGINGBUFFER_NOTIFY_FENCE_RESIDENCY NotifyFenceResidency;
DXGK_BUILDPAGINGBUFFER_MAPMMU MmapMmu;
DXGK_BUILDPAGINGBUFFER_UNMAPMMU UnmapMmu;
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY2 NotifyResidency2;
DXGK_BUILDPAGINGBUFFER_NOTIFYALLOC NotifyAllocation;
struct {
UINT Reserved[64];
} Reserved;
};
HANDLE hSystemContext;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;
メンバー
pDmaBuffer
[入力/出力]ページング バッファー内の使用可能な最初のバイトへの仮想アドレス。 ドライバーが新しいページング バッファーで最初に呼び出されると、この仮想アドレスは 4 KB に配置されます。 ドライバーは、ページング バッファーがいっぱいになるまでページング バッファー内の操作を密にパックし、新しいページング バッファーを使用します。 そのため、グラフィックス処理装置 (GPU) でページング バッファーの送信に特定の配置が必要な場合、ドライバーはページング バッファーに書き込む操作を埋め込むことで、この配置を強制する必要があります。 DxgkDdiBuildPagingBuffer 関数が返される前に、ドライバーは pDmaBuffer を更新して、ページング バッファーに書き込まれた最後のバイトを指すようにする必要があります。
DmaSize
[入力/出力] pDmaBuffer が指定するページング バッファーのサイズ (バイト単位)。
pDmaBufferPrivateData
[入力/出力] pDmaBuffer が指定するダイレクト メモリ アクセス (DMA) バッファー (つまりページング バッファー) に関連付けられているドライバー常駐のプライベート データ構造へのポインター。
DmaBufferPrivateDataSize
[入力/出力] pDmaBufferPrivateData が現在の操作を指すプライベート データ構造に残っているバイト数。
Operation
[入力] 実行するメモリ操作の種類を示すDXGK_BUILDPAGINGBUFFER_OPERATION型指定の値。
MultipassOffset
[入力/出力]複数のページング バッファーが必要な場合にページング操作の進行状況を指定する UINT 値。 ドライバーは、複数の転送操作の複数のページング バッファーに分割を示すように、この値を設定します。 たとえば、ドライバーは、ページベースの転送のために最後に転送されたページ番号を格納できます。
Transfer
[入力]転送操作を記述する構造体。
Transfer.hAllocation
[入力]ドライバーの DxgkDdiCreateAllocation 関数が、DXGKARG_CREATEALLOCATION構造体の pAllocationInfo メンバーの一部であるDXGK_ALLOCATIONINFO構造体の hAllocation メンバーで以前に返した割り当てへのハンドル。 割り当てハンドルは、転送用のプライベート ドライバー データを含むバッファーを指します。
Transfer.TransferOffset
[入力]転送される割り当て内の最初のページのオフセット (バイト単位)。 このオフセットは、セグメントの位置が示す場所にのみ適用されます。 このオフセットは、メモリ範囲の MDL 記述には適用されません。 転送を完了するためにドライバーが複数のページング バッファーを必要とする場合 (つまり、ドライバーは DxgkDdiBuildPagingBuffer 関数からSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFERを返します)、 TransferOffset は、この転送に対する DxgkDdiBuildPagingBuffer の呼び出しごとに同じです。
Transfer.TransferSize
[入力]転送するメモリ情報のサイズ (バイト単位)。
Transfer.Source
[入力]ソース割り当てを記述する構造体。 この構造体には、ソース割り当てのセグメントへのオフセット (SegmentAddress) またはソース (pMdl) の MDL へのポインターを含む SegmentId メンバーと共用体が含まれています。
Transfer.Source.SegmentId
[入力]ソース割り当て内のセグメントの識別子。ソース割り当てが Source に含まれる共用体の pMdl メンバーによって記述される場合は 0。
Transfer.Source.SegmentAddress
[入力]Source の SegmentId メンバーが 0 以外の場合は、 ソース セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
Transfer.Source.pMdl
[入力]Source の SegmentId メンバーが 0 の場合、ソースのシステム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。
Transfer.Destination
[入力]宛先の割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、宛先割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体が含まれています。
Transfer.Destination.SegmentId
[入力]宛先割り当て内のセグメントの識別子。Destination に含まれる共用体の pMdl メンバーによって宛先割り当てが記述されている場合は 0。
Transfer.Destination.SegmentAddress
[入力]Destination の SegmentId メンバーが 0 以外の場合の 宛先 セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
Transfer.Destination.pMdl
[入力]Destination の SegmentId メンバーが 0 の場合、宛先のシステム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。
Transfer.Flags
[入力] 実行 する特殊ロック転送操作の種類をビット フィールド フラグで識別するDXGK_TRANSFERFLAGS構造体。
Transfer.MdlOffset
[入力]pMdl メンバーが指す MDL 構造体内のシステム メモリ ページ内の、現在の操作の最初のシステム メモリ ページへのオフセット。 ドライバーは、次のように [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 関数を呼び出すことによって、最初のシステム メモリ ページの物理アドレスを取得できます。
MmGetMdlPfnArray(pMdl)[MdlOffset];
Fill
[入力]塗りつぶし操作を記述する構造体。
Fill.hAllocation
[入力]入力するコンテンツを含む割り当てへのハンドル。
Fill.FillSize
[入力]入力するメモリ情報のサイズ (バイト単位)。
Fill.FillPattern
[入力]変換先を塗りつぶすパターン。 ビデオ メモリ マネージャーは、この情報を使用して、コンテンツのない割り当てが最初にページングされるときに、ビデオ メモリを特定のパターンに初期化します。 この場合、フィル要求のソースは存在せず、宛先のみが存在します。
Fill.Destination
[入力]塗りつぶし操作の宛先の割り当てを記述する構造体。
Fill.Destination.SegmentId
[入力]宛先割り当て内のセグメントの識別子。
Fill.Destination.SegmentAddress
[入力]宛先セグメントのアドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
DiscardContent
[入力]コンテンツの破棄操作を記述する構造体。
DiscardContent.hAllocation
[入力]破棄するコンテンツを含む割り当てへのハンドル。
DiscardContent.Flags
[入力] 実行 する破棄コンテンツ操作の種類をビット フィールド フラグで識別するDXGK_DISCARDCONTENTFLAGS構造体。
DiscardContent.SegmentId
[入力]コンテンツを破棄する割り当て内のセグメントの識別子。
DiscardContent.SegmentAddress
[入力]セグメント アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
この場所は、コンテンツが破棄される場所です。
ReadPhysical
[入力]読み取り/物理操作を記述する構造体。
ReadPhysical.SegmentId
[入力]データの読み取り元となるセグメントの識別子。
ReadPhysical.PhysicalAddress
[入力] SegmentId が指定するセグメント内で、データが読み取られた場所の物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。
WritePhysical
[入力]書き込み/物理操作を記述する構造体。
WritePhysical.SegmentId
[入力]データが書き込まれるセグメントの識別子。
WritePhysical.PhysicalAddress
[入力] SegmentId が指定するセグメント内で、データの書き込み先となる物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。
MapApertureSegment
[入力]MDL を使用したマップ絞りセグメント操作を記述する構造体。
MapApertureSegment.hDevice
[入力] hAllocation が指定する割り当てを所有するデバイスへのハンドル。これは、 SegmentId が指定するアパーチャ セグメントにマップされます。
共有割り当ての場合、 hDevice は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。
プライマリ割り当ての場合、hDevice は NULL です。
MapApertureSegment.hAllocation
[入力] SegmentId が指定する絞りセグメントにマップされる割り当てのハンドル。
DMA バッファーがドライバーによって明示的に作成されないため、DMA バッファーが絞りセグメントにマップされている場合、hAllocation は NULL です。
MapApertureSegment.SegmentId
[入力]構成する絞りセグメントの識別子。
MapApertureSegment.OffsetInPages
[入力]セグメントの先頭からマップする最初のページまでのオフセット (ページ単位)。
MapApertureSegment.NumberOfPages
[入力]マップするページ数。
MapApertureSegment.pMdl
[入力]開口セグメントにマップする物理システム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。
MapApertureSegment.Flags
[入力] 実行 する map-aperture-segment 操作の種類をビット フィールド フラグで識別するDXGK_MAPAPERTUREFLAGS構造体。
MapApertureSegment.MdlOffset
[入力]pMdl メンバーが指す MDL 構造体内のシステム メモリ ページ内の、現在の操作の最初のシステム メモリ ページへのオフセット。 ドライバーは、次のように [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 関数を呼び出すことによって、最初のシステム メモリ ページの物理アドレスを取得できます。
MmGetMdlPfnArray(pMdl)[MdlOffset];
UnmapApertureSegment
[入力]マップ解除と絞りセグメントの操作を記述する構造体。
UnmapApertureSegment.hDevice
[入力] hAllocation が指定する割り当てを所有するデバイスへのハンドル。 SegmentId が指定するアパーチャ セグメントからマップ解除されます。
共有割り当ての場合、 hDevice は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。
プライマリ割り当ての場合、hDevice は NULL です。
UnmapApertureSegment.hAllocation
[入力] SegmentId が指定する絞りセグメントからマップ解除される割り当てへのハンドル。
DMA バッファーがドライバーによって明示的に作成されないため、DMA バッファーがアパーチャ セグメントからマップ解除された場合、hAllocation は NULL です。
UnmapApertureSegment.SegmentId
[入力]構成する絞りセグメントの識別子。
UnmapApertureSegment.OffsetInPages
[入力]セグメントの先頭から最初のページまでのオフセット (ページ単位)。
UnmapApertureSegment.NumberOfPages
[入力]マップ解除するページ数。
UnmapApertureSegment.DummyPage
[入力]ドライバーがマップされていない範囲をマップする必要があるプレースホルダー ページの物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。
SpecialLockTransfer
[入力]特殊ロック転送操作を記述する構造体。
SpecialLockTransfer.hAllocation
[入力]ドライバーの DxgkDdiCreateAllocation 関数が、DXGKARG_CREATEALLOCATION構造体の pAllocationInfo メンバーの一部であるDXGK_ALLOCATIONINFO構造体の hAllocation メンバーで以前に返した割り当てへのハンドル。 割り当てハンドルは、特殊ロック転送用のプライベート ドライバー データを含むバッファーを指します。
SpecialLockTransfer.TransferOffset
[入力]転送される割り当て内の最初のページのオフセット (バイト単位)。 このオフセットは、セグメントの位置が示す場所にのみ適用されます。 このオフセットは、メモリ範囲の MDL 記述には適用されません。 転送を完了するためにドライバーが複数のページング バッファーを必要とする場合 (つまり、ドライバーは DxgkDdiBuildPagingBuffer 関数からSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFERを返します)、 TransferOffset は、この転送に対する DxgkDdiBuildPagingBuffer の呼び出しごとに同じです。
SpecialLockTransfer.TransferSize
[入力]転送するメモリ情報のサイズ (バイト単位)。
SpecialLockTransfer.Source
[入力]ソース割り当てを記述する構造体。 この構造体には、ソース割り当てのセグメントへのオフセット (SegmentAddress) またはソース (pMdl) の MDL へのポインターを含む SegmentId メンバーと共用体が含まれています。
SpecialLockTransfer.Source.SegmentId
[入力]ソース割り当て内のセグメントの識別子。ソース割り当てが Source に含まれる共用体の pMdl メンバーによって記述される場合は 0。
SpecialLockTransfer.Source。(名前のない共用体)
[入力]ソース割り当てのセグメントへのオフセット (SegmentAddress) またはソース (pMdl) の MDL へのポインターを含む共用体。
SpecialLockTransfer.Source.SegmentAddress
[入力]Source の SegmentId メンバーが 0 以外の場合は、 ソース セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
SpecialLockTransfer.Source.pMdl
[入力]Source の SegmentId メンバーが 0 の場合、ソースのシステム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。
SpecialLockTransfer.Destination
[入力]宛先の割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、宛先割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体が含まれています。
SpecialLockTransfer.Destination.SegmentId
[入力]宛先割り当て内のセグメントの識別子。Destination に含まれる共用体の pMdl メンバーによって宛先割り当てが記述されている場合は 0。
SpecialLockTransfer.Destination。(名前のない共用体)
[入力]宛先割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体。
SpecialLockTransfer.Destination.SegmentAddress
[入力]Destination の SegmentId メンバーが 0 以外の場合の 宛先 セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
SpecialLockTransfer.Destination.pMdl
[入力]Destination の SegmentId メンバーが 0 の場合、宛先のシステム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。
SpecialLockTransfer.Flags
[入力] 実行 する特殊ロック転送操作の種類をビット フィールド フラグで識別するDXGK_TRANSFERFLAGS構造体。
SpecialLockTransfer.SwizzlingRangeId
[入力]スウィズル範囲を識別する UINT 値。
SpecialLockTransfer.SwizzlingRangeData
[入力]スウィズリング範囲データを指定する UINT 値。
InitContextResource
[入力]コンテキスト初期化操作を記述する構造体。 Windows 8 以降でサポートされます。
InitContextResource.hAllocation
[入力] ドライバーが DxgkCbCreateContextAllocation と呼ばれるときに作成されたコンテキスト割り当てへのハンドル。 この割り当てのハンドルは、DXGKARGCB_CREATECONTEXTALLOCATION構造体の hAllocation メンバーで返されます。 ドライバーは、DxgkCbCreateContextAllocation を呼び出すときに、ContextAllocation パラメーターでこの構造体へのポインターを渡します。
InitContextResource.Destination
[入力]宛先コンテキストの割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、宛先コンテキスト割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体が含まれます。
InitContextResource.Destination.SegmentId
[入力]宛先コンテキスト割り当て内のセグメントの識別子。Destination に含まれる共用体の pMdl メンバーによって宛先コンテキスト割り当てが記述されている場合は 0。
InitContextResource.Destination。(名前のない共用体)
[入力]宛先コンテキスト割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体。
InitContextResource.Destination.SegmentAddress
[入力]Destination の SegmentId メンバーが 0 以外の場合の 宛先 セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します。 SegmentAddress = SegmentOffset + Segment.BaseAddr
InitContextResource.Destination.pMdl
[入力]Destination の SegmentId メンバーが 0 の場合、宛先のシステム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。
InitContextResource.Destination.VirtualAddress
[入力]宛先コンテキスト割り当ての仮想アドレス。 このアドレスは、コンテキスト割り当ての有効期間中に有効です。
DxgkCbCreateContextAllocation トピックの「宛先コンテキスト割り当ての仮想アドレス」セクションの手順に従って、仮想アドレスが有効であることを確認します。
InitContextResource.Destination.GpuVirtualAddress
初期化するコンテキスト リソースの GPU 仮想アドレス。
TransferVirtual
メモリ内の場所間で割り当てコンテンツを転送するために使用される操作を記述する DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL 構造体。
FillVirtual
割り当てをパターンで埋めるために使用される操作を記述する DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL 構造体。
UpdatePageTable
ページ テーブルの更新に使用される操作を記述する DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE 構造体。
FlushTlb
変換のルックアサイド バッファーをフラッシュするために使用される操作を記述する DXGK_BUILDPAGINGBUFFER_FLUSHTLB 構造体。
CopyPageTableEntries
ページ テーブルエントリをある場所から別の場所にコピーする操作を記述する DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES 構造体。
UpdateContextAllocation
コンテキストまたはデバイス割り当ての内容を更新するために使用される操作を記述するDXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION構造体。
NotifyResidency
所在地割り当て変更操作を記述する DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY 構造体。
SignalMonitoredFence
[入力]ページング監視対象のフェンス オブジェクトを DMA バッファーに通知する GPU 命令を記述する DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE 構造体。 Windows 10 バージョン 1703 (WDDM 2.2) 以降で使用できます。
MapApertureSegment2
MapApertureSegment2.hDevice
[入力] hAllocation が指定する割り当てを所有するデバイスへのハンドル。これは、 SegmentId が指定するアパーチャ セグメントにマップされます。
共有割り当ての場合、 hDevice は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。
プライマリ割り当ての場合、hDevice は NULL です。
MapApertureSegment2.hAllocation
[入力] SegmentId が指定する絞りセグメントにマップされる割り当てに対するドライバー ハンドル。
DMA バッファーがドライバーによって明示的に作成されないため、DMA バッファーが絞りセグメントにマップされている場合、hAllocation は NULL です。
MapApertureSegment2.SegmentId
[入力]構成する絞りセグメントの識別子。
MapApertureSegment2.OffsetInPages
[入力]セグメントの先頭からマップする最初のページまでのオフセット (ページ単位)。
MapApertureSegment2.NumberOfPages
[入力]割り当て内でマップされる範囲のサイズ (ページ単位)。
MapApertureSegment2.Adl
[入力]割り当てメモリの論理アドレス マッピング (ページ) を記述するアドレス記述子リスト (ADL) を含むDXGK_ADL構造体。 この ADL には、連続した配列またはページ配列を指定できます。ドライバーは両方のケースを処理できる必要があります。
MapApertureSegment2.Flags
[入力] 実行 する map-aperture-segment 操作の種類をビット フィールド フラグで識別するDXGK_MAPAPERTUREFLAGS構造体。
MapApertureSegment2.AdlOffset
[入力]システム メモリ ページで指定された、現在の操作にマップされている論理アドレスの範囲の先頭への ADL 内のオフセット。 ADL が連続する ADL の場合、ADL の BasePageNumber メンバーは、連続するメモリ範囲の開始アドレスです。 それ以外の場合は、連続していないメモリに ADL の Pages メンバーを使用します。
MapApertureSegment2.CpuVisibleAddress
MapApertureCpuVisible フラグを設定してドライバーの割り当てが作成された場合、CpuVisibleAddress は、DXGK_OPERATION_MAP_APERTURE_SEGMENT2操作用のシステム マップされたカーネル モードの仮想アドレスへの null 以外のポインターです。 このアドレスは、割り当てが絞りセグメントにマップされ、同じ割り当ての対応する DXGK_OPERATION_UNMAP_APERTURE_SEGMENT 呼び出しの直後に解放される限り有効です。
MapApertureCpuVisible が指定されていない場合、cpuVisibleAddress はDXGK_OPERATION_MAP_APERTURE_SEGMENT2操作に対して NULL です。
NotifyFenceResidency
MmapMmu
UnmapMmu
NotifyResidency2
NotifyAllocation
Reserved
このメンバーは予約されており、使用しないでください。
Reserved.Reserved[64]
このメンバーは予約されており、使用しないでください。
hSystemContext
[入力]ページング操作のシステム コンテキストへのハンドル。
DmaBufferGpuVirtualAddress
DMA バッファーがページングされた仮想アドレスを示す D3DGPU_VIRTUAL_ADDRESS データ型。 物理アドレスが 0 の場合、DMA バッファーは正しくページングされません。
DmaBufferWriteOffset
DMA バッファーの先頭からの現在の操作オフセット (バイト単位)。
注釈
MDL は、 Windows ドライバー モデル (WDM) のドキュメントで定義されています。
WDDM 同期クラス:
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降でサポートされています。 |
Header | d3dkmddi.h (D3dkmddi.h を含む) |
こちらもご覧ください
DXGKARGCB_CREATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL
DXGK_BUILDPAGINGBUFFER_FLUSHTLB
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE
[MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray