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;
    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

[入力]DestinationSegmentId メンバーが 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 は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。

プライマリ割り当ての場合、hDeviceNULL です

MapApertureSegment.hAllocation

[入力] SegmentId が指定する絞りセグメントにマップされる割り当てのハンドル。

DMA バッファーがドライバーによって明示的に作成されないため、DMA バッファーが絞りセグメントにマップされている場合、hAllocationNULL です。

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 は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。

プライマリ割り当ての場合、hDeviceNULL です

UnmapApertureSegment.hAllocation

[入力] SegmentId が指定する絞りセグメントからマップ解除される割り当てへのハンドル。

DMA バッファーがドライバーによって明示的に作成されないため、DMA バッファーがアパーチャ セグメントからマップ解除された場合、hAllocationNULL です。

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

[入力]DestinationSegmentId メンバーが 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

[入力]DestinationSegmentId メンバーが 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 は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。

プライマリ割り当ての場合、hDeviceNULL です

MapApertureSegment2.hAllocation

[入力] SegmentId が指定する絞りセグメントにマップされる割り当てに対するドライバー ハンドル。

DMA バッファーがドライバーによって明示的に作成されないため、DMA バッファーが絞りセグメントにマップされている場合、hAllocationNULL です。

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 が指定されていない場合、cpuVisibleAddressDXGK_OPERATION_MAP_APERTURE_SEGMENT2操作に対して NULL です。

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

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES

DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL

DXGK_BUILDPAGINGBUFFER_FLUSHTLB

DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY

DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL

DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION

DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE

DXGK_DISCARDCONTENTFLAGS

DXGK_MAPAPERTUREFLAGS

DXGK_TRANSFERFLAGS

DxgkCbCreateContextAllocation

DxgkDdiBuildPagingBuffer

DxgkDdiCreateAllocation

Mdl

[MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray

pfnLockCb