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 中的页数为 Size/PAGE_SIZE。

Flags

[in] Flags.RequireContiguous

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

[in] Flags.PreferContiguous

为驱动程序提供一种尽可能以最佳方式请求连续 ADL 的方法。 启用 DMA 重新映射后,ADL 将引用逻辑地址空间的范围;但是,驱动程序可能无法在所有代码路径中使用连续的 ADL。 逻辑内存的非连续 ACL 可能会变得成本高昂,因为它们需要分配单独的 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