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_MEMORY 或 DXGK_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 |