DXGKARGCB_ALLOCATE_ADL结构(d3dkmddi.h)

DXGKARGCB_ALLOCATE_ADL 包含 DXGKCB_ALLOCATEADL 回调函数用于创建地址描述符列表(ADL)的信息。

语法

typedef struct _DXGKARGCB_ALLOCATE_ADL {
  [in]  HANDLE   hAdapterMemoryObject;
  [in]  SIZE_T   Offset;
  [in]  SIZE_T   Size;
  union {
    struct {
      UINT32 RequireContiguous : 1;
      UINT32 PreferContiguous : 1;
      UINT32 Reserved : 30;
    };
          UINT32 Value;
  } Flags;
  [out] DXGK_ADL *pAdl;
} DXGKARGCB_ALLOCATE_ADL;

成员

[in] hAdapterMemoryObject

描述用于生成 ADL 的基础逻辑内存的适配器内存对象。 此对象是通过 DXGKCB_CREATEPHYSICALMEMORYOBJECT 或更高版本通过 DXGKCB_OPENPHYSICALMEMORYOBJECT创建的。

[in] Offset

物理内存对象的起始位置的偏移量(以字节为单位)。 此值必须是PAGE_SIZE的倍数。

[in] Size

要为 ADL 分配的总字节数。 此值必须是PAGE_SIZE的倍数,以便 ADL 中的页数 大小/PAGE_SIZE。

Flags

[in] Flags.RequireContiguous

指示驱动程序正在请求描述连续内存范围的 ADL,而不是分散的页面。 仅当 hAdapterMemoryObj ect 表示的物理内存对象被分配为 DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORYDXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE时,此标志才有效。

[in] Flags.PreferContiguous

为驱动程序提供一种在可能的情况下以最佳方式请求连续 ADL 的方法。 启用 DMA 重新映射后,ADL 将引用逻辑地址空间的范围;但是,驱动程序可能无法在所有代码路径中使用连续 ADL。 逻辑内存的非连续 ADL 可能会变得昂贵,因为它们需要分配单独的 PFN 数组(类似于 MDL)来表示内存。 如果可能,驱动程序应指定此标志,以指示只能用基址表示 ADL。

[in] Flags.Reserved

保留;必须设置为零。

[in] Flags.Value

访问位的替代方法。

[out] pAdl

成功调用 DXGKCB_ALLOCATEADL时,指向 DXGK_ADL 结构,其中包含可用于对硬件进行编程的页面地址列表。

言论

有关详细信息,请参阅 IOMMU DMA 重新映射

要求

要求 价值
支持的最低服务器 Windows Server 2022 (WDDM 2.9)
标头 d3dkmddi.h

另请参阅

DXGKCB_ALLOCATEADL

DXGKCB_CREATEPHYSICALMEMORYOBJECT

DXGKCB_OPENPHYSICALMEMORYOBJECT