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

[in/out]分页缓冲区中第一个可用字节的虚拟地址。 首次使用新的分页缓冲区调用驱动程序时,此虚拟地址在 4 KB 上对齐。 驱动程序在分页缓冲区中紧密打包操作,直到分页缓冲区已满,然后使用新的分页缓冲区。 因此,如果图形处理单元 (GPU) 需要对分页缓冲区提交进行特定的对齐,则驱动程序应通过填充写入分页缓冲区的操作来强制实施此对齐。 在 DxgkDdiBuildPagingBuffer 函数返回之前,驱动程序应更新 pDmaBuffer ,使其指向写入分页缓冲区的最后一个字节。

DmaSize

[in/out] pDmaBuffer 指定的分页缓冲区的大小(以字节为单位)。

pDmaBufferPrivateData

[in/out]指向与直接内存访问关联的驱动程序驻留专用数据结构的指针, (DMA) 缓冲区 (即 pDmaBuffer 指定的分页缓冲区) 。

DmaBufferPrivateDataSize

[in/out] pDmaBufferPrivateData 为当前操作指向的专用数据结构中保留的字节数。

Operation

[in] 一个DXGK_BUILDPAGINGBUFFER_OPERATION类型的值,指示要执行的内存操作的类型。

MultipassOffset

[in/out]一个 UINT 值,该值指定分页操作的进度(如果需要多个分页缓冲区)。 驱动程序将此值设置为指示拆分为多个分页缓冲区进行多个传输操作。 例如,驱动程序可以存储上次为基于分页的传输传输的页码。

Transfer

[in]描述传输操作的结构。

Transfer.hAllocation

[in]驱动程序的 DxgkDdiCreateAllocation 函数先前在 DXGK_ALLOCATIONINFO 结构的 hAllocation 成员中返回的分配句柄,该成员是 DXGKARG_CREATEALLOCATION 结构的 pAllocationInfo 成员的一部分。 分配句柄指向包含用于传输的专用驱动程序数据的缓冲区。

Transfer.TransferOffset

[in]传输的分配中第一页的偏移量(以字节为单位)。 此偏移量仅适用于段位置描述的位置。 此偏移量不适用于内存范围的 MDL 说明。 如果驱动程序需要多个分页缓冲区才能完成传输 (,则驱动程序从其 DxgkDdiBuildPagingBuffer 函数) 返回STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER,则对于此传输,每次调用 DxgkDdiBuildPagingBuffer,TransferOffset 都是相同的。

Transfer.TransferSize

[in]要传输的内存信息的大小(以字节为单位)。

Transfer.Source

[in]描述源分配的结构。 此结构包含一个 SegmentId 成员和一个联合,该联合包含源分配的一个偏移量 (SegmentAddress) 或指向源 (pMdl) 的 MDL 的指针。

Transfer.Source.SegmentId

[in]源分配中段的标识符;如果源分配由源包含的联合的 pMdl 成员描述,则为零。

Transfer.Source.SegmentAddress

[in]如果 Source 的 SegmentId 成员为非零,则 为源 段地址。 DirectX 图形内核子系统将段地址计算为段偏移量和段的基址之和: SegmentAddress = SegmentOffset + Segment.BaseAddr

Transfer.Source.pMdl

[in]指向包含 MDL 结构的缓冲区的指针,该结构描述源的系统内存页(如果 SourceSegmentId 成员为零)。

Transfer.Destination

[in]描述目标分配的结构。 此结构包含一个 SegmentId 成员和一个联合,该联合包含目标分配段的偏移量 (SegmentAddress) 或指向目标 (pMdl) 的 MDL 的指针。

Transfer.Destination.SegmentId

[in]目标分配中段的标识符;如果目标分配由 Destination 包含的联合的 pMdl 成员描述,则为零。

Transfer.Destination.SegmentAddress

[in]如果 Destination 的 SegmentId 成员为非零,则 为目标 段地址。 DirectX 图形内核子系统将段地址计算为段偏移量和段的基址之和: SegmentAddress = SegmentOffset + Segment.BaseAddr

Transfer.Destination.pMdl

[in]指向包含 MDL 结构的缓冲区的指针,该结构描述目标的系统内存页(如果 DestinationSegmentId 成员为零)。

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]PHYSICAL_ADDRESS数据类型 (定义为指示 SegmentId 指定的段内的物理地址的LARGE_INTEGER) ,其中读取数据。

WritePhysical

[in]描述写入物理操作的结构。

WritePhysical.SegmentId

[in]将数据写入到的段的标识符。

WritePhysical.PhysicalAddress

[in]PHYSICAL_ADDRESS数据类型 (定义为LARGE_INTEGER) ,指示 SegmentId 指定的段内的物理地址,其中写入数据。

MapApertureSegment

[in]描述使用 MDL 的 map-aperture-segment 操作的结构。

MapApertureSegment.hDevice

[in]拥有 hAllocation 指定映射到 SegmentId 指定的光圈段的分配的设备句柄。

对于共享分配, hDevice 设置为视频内存管理器确定为分配所有者的设备。

hDevice 对于主分配为 NULL

MapApertureSegment.hAllocation

[in]映射到 SegmentId 指定的光圈段的分配的句柄。

当 DMA 缓冲区映射到光圈段时,hAllocationNULL,因为驱动程序未显式创建 DMA 缓冲区。

MapApertureSegment.SegmentId

[in]要配置的光圈段的标识符。

MapApertureSegment.OffsetInPages

[in]从段开头到要映射的第一页的偏移量(以页为单位)。

MapApertureSegment.NumberOfPages

[in]要映射的页数。

MapApertureSegment.pMdl

[in]指向缓冲区的指针,该缓冲区包含 MDL 结构,该结构描述要映射到光圈段的物理系统内存页。

MapApertureSegment.Flags

[in] 一个DXGK_MAPAPERTUREFLAGS 结构,用于在位字段标志中标识要执行的 map-aperture-segment 运算的类型。

MapApertureSegment.MdlOffset

[in]在 pMdl 成员指向的 MDL 结构中,系统内存页中与当前操作的第一个系统内存页的偏移量。 驱动程序可以通过调用 [MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 函数来获取第一个系统内存页的物理地址,如下所示。

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in]描述 unmap-aperture-segment 操作的结构。

UnmapApertureSegment.hDevice

[in]拥有分配的设备句柄, hAllocation 指定从 SegmentId 指定的光圈段取消映射。

对于共享分配, hDevice 设置为视频内存管理器确定为分配所有者的设备。

hDevice 对于主分配为 NULL

UnmapApertureSegment.hAllocation

[in]从 SegmentId 指定的光圈段取消映射的分配的句柄。

当 DMA 缓冲区从光圈段取消映射时,hAllocationNULL,因为驱动程序未显式创建 DMA 缓冲区。

UnmapApertureSegment.SegmentId

[in]要配置的光圈段的标识符。

UnmapApertureSegment.OffsetInPages

[in]从段开头到要取消映射的第一页的偏移量(以页为单位)。

UnmapApertureSegment.NumberOfPages

[in]要取消映射的页数。

UnmapApertureSegment.DummyPage

[in]PHYSICAL_ADDRESS数据类型 (定义为LARGE_INTEGER) ,指示占位符页的物理地址,驱动程序应在其中映射未映射的范围。

SpecialLockTransfer

[in]描述特殊锁定-传输操作的结构。

SpecialLockTransfer.hAllocation

[in]驱动程序的 DxgkDdiCreateAllocation 函数先前在 DXGK_ALLOCATIONINFO 结构的 hAllocation 成员中返回的分配句柄,该成员是 DXGKARG_CREATEALLOCATION 结构的 pAllocationInfo 成员的一部分。 分配句柄指向一个缓冲区,该缓冲区包含用于特殊锁传输的专用驱动程序数据。

SpecialLockTransfer.TransferOffset

[in]传输的分配中第一页的偏移量(以字节为单位)。 此偏移量仅适用于段位置描述的位置。 此偏移量不适用于内存范围的 MDL 说明。 如果驱动程序需要多个分页缓冲区才能完成传输 (,则驱动程序从其 DxgkDdiBuildPagingBuffer 函数) 返回STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER,则对于此传输,每次调用 DxgkDdiBuildPagingBuffer,TransferOffset 都是相同的。

SpecialLockTransfer.TransferSize

[in]要传输的内存信息的大小(以字节为单位)。

SpecialLockTransfer.Source

[in]描述源分配的结构。 此结构包含一个 SegmentId 成员和一个联合,该联合包含源分配的一个偏移量 (SegmentAddress) 或指向源 (pMdl) 的 MDL 的指针。

SpecialLockTransfer.Source.SegmentId

[in]源分配中段的标识符;如果源分配由源包含的联合的 pMdl 成员描述,则为零。

SpecialLockTransfer.Source. (未命名联合)

[in]一个联合,该联合包含源分配 (SegmentAddress) 段的偏移量,或指向源 (pMdl) 的 MDL 的指针。

SpecialLockTransfer.Source.SegmentAddress

[in]如果 Source 的 SegmentId 成员为非零,则为 段地址。 DirectX 图形内核子系统将段地址计算为段偏移量和段基址的总和: SegmentAddress = SegmentOffset + Segment.BaseAddr

SpecialLockTransfer.Source.pMdl

[in]指向包含 MDL 结构的缓冲区的指针,该结构描述源的系统内存页(如果 SourceSegmentId 成员为零)。

SpecialLockTransfer.Destination

[in]描述目标分配的 结构。 此结构包含一个 SegmentId 成员和一个联合,该联合包含目标分配 (SegmentAddress) 段的偏移量或指向目标 (pMdl) 的 MDL 的指针。

SpecialLockTransfer.Destination.SegmentId

[in]目标分配中段的标识符;如果目标分配由 Destination 包含的联合的 pMdl 成员描述,则为零。

SpecialLockTransfer.Destination. (未命名联合)

[in]包含目标分配 (SegmentAddress) 段的偏移量或指向目标 (pMdl) 的 MDL 的指针的联合。

SpecialLockTransfer.Destination.SegmentAddress

[in]如果 Destination 的 SegmentId 成员为非零,则 为目标 段地址。 DirectX 图形内核子系统将段地址计算为段偏移量和段基址的总和: SegmentAddress = SegmentOffset + Segment.BaseAddr

SpecialLockTransfer.Destination.pMdl

[in]指向缓冲区的指针,该缓冲区包含描述目标的系统内存页的 MDL 结构(如果 DestinationSegmentId 成员为零)。

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 成员描述,则为零。

InitContextResource.Destination. (未命名联合)

[in]包含目标上下文分配段的偏移量 (SegmentAddress) 或指向目标 (pMdl) 的 MDL 的指针的联合。

InitContextResource.Destination.SegmentAddress

[in]如果 Destination 的 SegmentId 成员为非零,则 为目标 段地址。 DirectX 图形内核子系统将段地址计算为段偏移量和段基址的总和: SegmentAddress = SegmentOffset + Segment.BaseAddr

InitContextResource.Destination.pMdl

[in]指向缓冲区的指针,该缓冲区包含描述目标的系统内存页的 MDL 结构(如果 DestinationSegmentId 成员为零)。

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] 一个 DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE 结构,它描述一个 GPU 指令,用于向 DMA 缓冲区发出分页监视的围栏对象信号。 从 Windows 10 版本 1703 开始提供, (WDDM 2.2) 。

MapApertureSegment2

MapApertureSegment2.hDevice

[in]拥有 hAllocation 指定映射到 SegmentId 指定的光圈段的分配的设备的句柄。

对于共享分配, hDevice 设置为视频内存管理器确定为分配所有者的设备。

hDevice 对于主分配为 NULL

MapApertureSegment2.hAllocation

[in]映射到 SegmentId 指定的光圈段的分配的驱动程序句柄。

当 DMA 缓冲区映射到光圈段时,hAllocationNULL,因为驱动程序未显式创建 DMA 缓冲区。

MapApertureSegment2.SegmentId

[in]要配置的光圈段的标识符。

MapApertureSegment2.OffsetInPages

[in]从段的开头到要映射的第一页的偏移量(以页为单位)。

MapApertureSegment2.NumberOfPages

[in]在分配中映射的范围的大小(以页为单位)。

MapApertureSegment2.Adl

[in]一个 DXGK_ADL 结构,其中包含地址描述符列表 (ADL) ,用于描述分配内存) (页的逻辑地址映射。 此 ADL 可以是连续的,也可以是页数组;驱动程序必须能够处理这两种情况。

MapApertureSegment2.Flags

[in] 一个DXGK_MAPAPERTUREFLAGS 结构,用于标识在位字段标志中要执行的 map-aperture-segment 操作的类型。

MapApertureSegment2.AdlOffset

[in] ADL 中为当前操作映射的逻辑地址范围的起始位置的偏移量,在系统内存页中指定。 如果 ADL 是连续的 ADL,则 ADL 的 BasePageNumber 成员是连续内存范围的起始地址。 否则,将 ADL 的 Pages 成员用于非连续内存。

MapApertureSegment2.CpuVisibleAddress

如果创建驱动程序的分配时设置了 MapApertureCpuVisible 标志, 则 CpuVisibleAddress 是指向系统映射的内核模式虚拟地址的非 null 指针,用于 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 操作。 只要分配映射到光圈段,此地址就有效,并且会在调用同一分配的相应 DXGK_OPERATION_UNMAP_APERTURE_SEGMENT 后立即释放。

如果未指定 MapApertureCpuVisible ,则 cpuVisibleAddress 对于 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 操作为 NULL。

NotifyFenceResidency

MmapMmu

UnmapMmu

NotifyResidency2

NotifyAllocation

Reserved

此成员是保留的,不应使用。

Reserved.Reserved[64]

此成员是保留的,不应使用。

hSystemContext

[in]分页操作的系统上下文的句柄。

DmaBufferGpuVirtualAddress

D3DGPU_VIRTUAL_ADDRESS数据类型,指示 DMA 缓冲区分页所在的虚拟地址。 如果物理地址为零,则 DMA 缓冲区未正确分页。

DmaBufferWriteOffset

从 DMA 缓冲区开头开始的当前操作偏移量(以字节为单位)。

注解

MDL 在 Windows 驱动程序模型 (WDM) 文档中定义。

WDDM 同步类:

要求

要求
最低受支持的客户端 从 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