次の方法で共有


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

[in]実行するメモリ操作の種類を示す DXGK_BUILDPAGINGBUFFER_OPERATION型指定された値。

MultipassOffset

[入力/出力]複数のページング バッファーが必要な場合にページング操作の進行状況を指定する UINT 値。 ドライバーは、複数の転送操作の複数のページング バッファーに分割を示すこの値を設定します。 たとえば、ドライバーは、ページベースの転送のために最後に転送されたページ番号を格納できます。

Transfer

[in]転送操作を記述する構造体。

Transfer.hAllocation

[in]ドライバーの DxgkDdiCreateAllocation 関数が、DXGKARG_CREATEALLOCATION 構造体の pAllocationInfo メンバーの一部である DXGK_ALLOCATIONINFO 構造体の hAllocation メンバーで以前に返された割り当てのハンドル。 割り当てハンドルは、転送用のプライベート ドライバー データを含むバッファーを指します。

Transfer.TransferOffset

[in]転送される割り当て内の最初のページのオフセット (バイト単位)。 このオフセットは、セグメントの位置が記述する位置にのみ適用されます。 このオフセットは、メモリ範囲の MDL 説明には適用されません。 転送を完了するためにドライバーが複数のページング バッファーを必要とする場合 (つまり、ドライバーは DxgkDdiBuildPagingBuffer 関数からSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFERを返します)、TransferOffset は、この転送に対する DxgkDdiBuildPagingBuffer の呼び出しごとに同じです。

Transfer.TransferSize

[in]転送するメモリ情報のサイズ (バイト単位)。

Transfer.Source

[in]ソース割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、ソース割り当てのセグメントへのオフセット (SegmentAddress) またはソース (pMdl) の MDL へのポインターを含む共用体が含まれます。

Transfer.Source.SegmentId

[in]ソース割り当て内のセグメントの識別子。ソース に含まれる共用体の pMdl メンバーによってソース割り当てが記述されている場合は 0

Transfer.Source.SegmentAddress

[in]ソース SegmentId メンバーが 0 以外の場合 ソース セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Source.pMdl

[in]ソース のメンバー SegmentId が 0 の場合、ソースのシステム メモリ ページを記述する MDL 構造体 含むバッファーへのポインター。

Transfer.Destination

[in]宛先の割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、宛先割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体が含まれます。

Transfer.Destination.SegmentId

[in]宛先割り当て内のセグメントの識別子。destination に含まれる共用体の pMdl メンバーによって宛先割り当てが記述されている場合は 0

Transfer.Destination.SegmentAddress

[in]Destination SegmentId メンバーが 0 以外の場合 宛先セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

[in]SegmentId destination のメンバーが 0 の場合、宛先のシステム メモリ ページを記述する MDL 構造体 含むバッファーへのポインター。

Transfer.Flags

[in]実行する特殊なロック転送操作の種類をビット フィールド フラグで識別する DXGK_TRANSFERFLAGS 構造体。

Transfer.MdlOffset

[in]システム メモリ ページ内の、pMdl メンバーが指す MDL 構造体内の、現在の操作の最初のシステム メモリ ページへのオフセット。 ドライバーは、次のように [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 関数を呼び出すことによって、最初のシステム メモリ ページの物理アドレスを取得できます。

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in]塗りつぶし操作を記述する構造体。

Fill.hAllocation

[in]入力するコンテンツを含む割り当てのハンドル。

Fill.FillSize

[in]入力するメモリ情報のサイズ (バイト単位)。

Fill.FillPattern

[in]宛先を塗りつぶすパターン。 ビデオ メモリ マネージャーは、この情報を使用して、コンテンツのない割り当てが最初にページングされたときに、ビデオ メモリを特定のパターンに初期化します。 この場合、フィル要求のソースは存在せず、宛先のみが存在します。

Fill.Destination

[in]塗りつぶし操作の宛先の割り当てを記述する構造体。

Fill.Destination.SegmentId

[in]宛先割り当て内のセグメントの識別子。

Fill.Destination.SegmentAddress

[in]宛先セグメントのアドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr.

DiscardContent

[in]コンテンツの破棄操作を記述する構造体。

DiscardContent.hAllocation

[in]破棄するコンテンツを含む割り当てのハンドル。

DiscardContent.Flags

[in]実行するコンテンツの破棄操作の種類をビット フィールド フラグで識別する DXGK_DISCARDCONTENTFLAGS 構造体。

DiscardContent.SegmentId

[in]コンテンツを破棄する割り当て内のセグメントの識別子。

DiscardContent.SegmentAddress

[in]セグメント アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義)。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr. この場所は、コンテンツが破棄される場所です。

ReadPhysical

[in]読み取り/物理操作を記述する構造体。

ReadPhysical.SegmentId

[in]データの読み取り元となるセグメントの識別子。

ReadPhysical.PhysicalAddress

[in]SegmentId が指定する セグメント内の物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。

WritePhysical

[in]書き込み/物理操作を記述する構造体。

WritePhysical.SegmentId

[in]データが書き込まれるセグメントの識別子。

WritePhysical.PhysicalAddress

[in]SegmentId が指定する セグメント内の物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。

MapApertureSegment

[in]MDL を使用したマップ絞りセグメント操作を記述する構造体。

MapApertureSegment.hDevice

[in]HAllocation 割り当てを所有するデバイスへのハンドルは、SegmentId 指定 アパーチャ セグメントにマップされることを指定します。

共有割り当ての場合、hDevice は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。

hDevice は、プライマリ割り当てに対して NULL

MapApertureSegment.hAllocation

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

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

MapApertureSegment.SegmentId

[in]構成する絞りセグメントの識別子。

MapApertureSegment.OffsetInPages

[in]セグメントの先頭からマップする最初のページまでのオフセット (ページ単位)。

MapApertureSegment.NumberOfPages

[in]マップするページの数。

MapApertureSegment.pMdl

[in]アパーチャ セグメントにマップする物理システム メモリ ページを記述する MDL 構造体を含むバッファーへのポインター。

MapApertureSegment.Flags

[in]実行するマップ絞りセグメント操作の種類をビット フィールド フラグで識別する DXGK_MAPAPERTUREFLAGS 構造体。

MapApertureSegment.MdlOffset

[in]システム メモリ ページ内の、pMdl メンバーが指す MDL 構造体内の、現在の操作の最初のシステム メモリ ページへのオフセット。 ドライバーは、次のように [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 関数を呼び出すことによって、最初のシステム メモリ ページの物理アドレスを取得できます。

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in]マップ解除と絞りセグメントの操作を記述する構造体。

UnmapApertureSegment.hDevice

[in]HAllocation 割り当てを所有するデバイスへのハンドルは、SegmentId 指定 アパーチャ セグメントからマップ解除されることを指定します。

共有割り当ての場合、hDevice は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。

hDevice は、プライマリ割り当てに対して NULL

UnmapApertureSegment.hAllocation

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

ドライバーによって DMA バッファーが明示的に作成されていないため、dma バッファーが絞りセグメントからマップ解除されると、hAllocation は NULL

UnmapApertureSegment.SegmentId

[in]構成する絞りセグメントの識別子。

UnmapApertureSegment.OffsetInPages

[in]セグメントの先頭から最初のページまでのオフセット (ページ単位)。

UnmapApertureSegment.NumberOfPages

[in]マップ解除するページの数。

UnmapApertureSegment.DummyPage

[in]ドライバーがマップされていない範囲をマップするプレースホルダー ページの物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義)。

SpecialLockTransfer

[in]特殊ロック転送操作を記述する構造体。

SpecialLockTransfer.hAllocation

[in]ドライバーの DxgkDdiCreateAllocation 関数が、DXGKARG_CREATEALLOCATION 構造体の pAllocationInfo メンバーの一部である DXGK_ALLOCATIONINFO 構造体の hAllocation メンバーで以前に返された割り当てのハンドル。 割り当てハンドルは、特殊ロック転送用のプライベート ドライバー データを含むバッファーを指します。

SpecialLockTransfer.TransferOffset

[in]転送される割り当て内の最初のページのオフセット (バイト単位)。 このオフセットは、セグメントの位置が記述する位置にのみ適用されます。 このオフセットは、メモリ範囲の MDL 説明には適用されません。 転送を完了するためにドライバーが複数のページング バッファーを必要とする場合 (つまり、ドライバーは DxgkDdiBuildPagingBuffer 関数からSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFERを返します)、TransferOffset は、この転送に対する DxgkDdiBuildPagingBuffer の呼び出しごとに同じです。

SpecialLockTransfer.TransferSize

[in]転送するメモリ情報のサイズ (バイト単位)。

SpecialLockTransfer.Source

[in]ソース割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、ソース割り当てのセグメントへのオフセット (SegmentAddress) またはソース (pMdl) の MDL へのポインターを含む共用体が含まれます。

SpecialLockTransfer.Source.SegmentId

[in]ソース割り当て内のセグメントの識別子。ソース に含まれる共用体の pMdl メンバーによってソース割り当てが記述されている場合は 0

SpecialLockTransfer.Source。(名前のない共用体)

[in]ソース割り当てのセグメントへのオフセット (SegmentAddress) またはソース (pMdl) の MDL へのポインターを含む共用体。

SpecialLockTransfer.Source.SegmentAddress

[in]ソース SegmentId メンバーが 0 以外の場合 ソース セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Source.pMdl

[in]ソース のメンバー SegmentId が 0 の場合、ソースのシステム メモリ ページを記述する MDL 構造体 含むバッファーへのポインター。

SpecialLockTransfer.Destination

[in]宛先の割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、宛先割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体が含まれます。

SpecialLockTransfer.Destination.SegmentId

[in]宛先割り当て内のセグメントの識別子。destination に含まれる共用体の pMdl メンバーによって宛先割り当てが記述されている場合は 0

SpecialLockTransfer.Destination。(名前のない共用体)

[in]宛先割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体。

SpecialLockTransfer.Destination.SegmentAddress

[in]Destination SegmentId メンバーが 0 以外の場合 宛先セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

[in]SegmentId destination のメンバーが 0 の場合、宛先のシステム メモリ ページを記述する MDL 構造体 含むバッファーへのポインター。

SpecialLockTransfer.Flags

[in]実行する特殊なロック転送操作の種類をビット フィールド フラグで識別する DXGK_TRANSFERFLAGS 構造体。

SpecialLockTransfer.SwizzlingRangeId

[in]スウィズリング範囲を識別する UINT 値。

SpecialLockTransfer.SwizzlingRangeData

[in]スウィズリング範囲データを指定する UINT 値。

InitContextResource

[in]コンテキスト初期化操作を記述する構造体。 Windows 8 以降でサポートされています。

InitContextResource.hAllocation

[in]ドライバーが DxgkCbCreateContextAllocation呼び出されたときに作成されたコンテキスト割り当てのハンドル。 この割り当てのハンドルは、DXGKARGCB_CREATECONTEXTALLOCATION 構造体の hAllocation メンバーで返されます。 ドライバーは、DxgkCbCreateContextAllocation 呼び出すときに、ContextAllocation パラメーターでこの構造体へのポインターを渡します。

InitContextResource.Destination

[in]宛先コンテキストの割り当てを記述する構造体。 この構造体には、SegmentId メンバーと、宛先コンテキスト割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体が含まれます。

InitContextResource.Destination.SegmentId

[in]宛先コンテキスト割り当て内のセグメントの識別子。Destination に含まれる共用体の pMdl メンバーによって宛先コンテキストの割り当てが記述されている場合 0。

InitContextResource.Destination。(名前のない共用体)

[in]宛先コンテキスト割り当てのセグメントへのオフセット (SegmentAddress) または宛先 (pMdl) の MDL へのポインターを含む共用体。

InitContextResource.Destination.SegmentAddress

[in]Destination SegmentId メンバーが 0 以外の場合 宛先セグメント アドレス。 DirectX グラフィックス カーネル サブシステムは、セグメント のオフセットとセグメントのベース アドレスの合計としてセグメント アドレスを計算します: SegmentAddress = SegmentOffset + Segment.BaseAddr.

InitContextResource.Destination.pMdl

[in]SegmentId destination のメンバーが 0 の場合、宛先のシステム メモリ ページを記述する MDL 構造体 含むバッファーへのポインター。

InitContextResource.Destination.VirtualAddress

[in]宛先コンテキスト割り当ての仮想アドレス。 このアドレスは、コンテキスト割り当ての有効期間中に有効です。

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

[in]ページング監視対象のフェンス オブジェクトを DMA バッファーに通知する GPU 命令を記述する DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE 構造体。 Windows 10 バージョン 1703 (WDDM 2.2) 以降で使用できます。

MapApertureSegment2

MapApertureSegment2.hDevice

[in]HAllocation 割り当てを所有するデバイスへのハンドルは、SegmentId 指定 アパーチャ セグメントにマップされることを指定します。

共有割り当ての場合、hDevice は、ビデオ メモリ マネージャーが割り当ての所有者であると判断したデバイスに設定されます。

hDevice は、プライマリ割り当てに対して NULL

MapApertureSegment2.hAllocation

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

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

MapApertureSegment2.SegmentId

[in]構成する絞りセグメントの識別子。

MapApertureSegment2.OffsetInPages

[in]セグメントの先頭からマップする最初のページまでのオフセット (ページ単位)。

MapApertureSegment2.NumberOfPages

[in]割り当て内でマップされる範囲のサイズ (ページ単位)。

MapApertureSegment2.Adl

[in]割り当てメモリの論理アドレス マッピング (ページ) を記述するアドレス記述子リスト (ADL) を持つ DXGK_ADL 構造体。 この ADL には、連続配列またはページ配列のいずれかを指定できます。ドライバーは両方のケースを処理できる必要があります。

MapApertureSegment2.Flags

[in]実行するマップ絞りセグメント操作の種類をビット フィールド フラグで識別する DXGK_MAPAPERTUREFLAGS 構造体。

MapApertureSegment2.AdlOffset

[in]ADL 内のオフセットは、システム メモリ ページで指定された、現在の操作にマップされている論理アドレスの範囲の先頭に します。 ADL が連続する ADL の場合、ADL の BasePageNumber メンバーは、連続するメモリ範囲の開始アドレスになります。 それ以外の場合は、連続していないメモリに対して ADL の Pages メンバーを使用します。

MapApertureSegment2.CpuVisibleAddress

MapApertureCpuVisible フラグが設定された状態でドライバーの割り当てが作成された場合、CpuVisibleAddress は、DXGK_OPERATION_MAP_APERTURE_SEGMENT2 操作のシステム マップされたカーネル モードの仮想アドレスへの null 以外のポインターです。 このアドレスは、割り当てが絞りセグメントにマップされ、同じ割り当ての対応する DXGK_OPERATION_UNMAP_APERTURE_SEGMENT 呼び出しの直後に解放される限り有効です。

MapApertureCpuVisible 指定されていない場合、DXGK_OPERATION_MAP_APERTURE_SEGMENT2 操作 CpuVisibleAddress は NULL になります。

NotifyFenceResidency

MmapMmu

UnmapMmu

NotifyResidency2

NotifyAllocation

Reserved

このメンバーは予約されているため、使用しないでください。

Reserved.Reserved[64]

このメンバーは予約されているため、使用しないでください。

hSystemContext

[in]ページング操作のシステム コンテキストへのハンドル。

DmaBufferGpuVirtualAddress

DMA バッファーがページングされた仮想アドレスを示す D3DGPU_VIRTUAL_ADDRESS データ型。 物理アドレスが 0 の場合、DMA バッファーは正しくページングされません。

DmaBufferWriteOffset

DMA バッファーの先頭からの現在の操作オフセット (バイト単位)。

備考

MDL は、Windows ドライバー モデル (WDM) ドキュメントで定義されています。

WDDM 同期クラス:

  • BuildPagingBuffer 申請の種類に対する第 1 レベル GPU スケジューラ クラス します。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降でサポートされています。
ヘッダー 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