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