IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG 结构 (wdm.h)
IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG 结构包含配置逻辑分配器所需的信息。
IOMMU_DOMAIN_CREATE_EX使用此结构创建附加到创建的 [IOMMU_DMA_DOMAIN] 的逻辑分配器。
语法
typedef struct _IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG {
IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE LogicalAllocatorType;
union {
struct {
ULONG AddressWidth;
} BuddyAllocatorConfig;
};
} IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG, *PIOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG;
成员
LogicalAllocatorType
一个IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE值,该值指示要创建的逻辑分配器的类型。
BuddyAllocatorConfig
提供特定于 HAL Buddy 分配器的配置信息。
BuddyAllocatorConfig.AddressWidth
提供要创建的分配器的地址宽度。 32 位操作系统的宽度限制为 32 位,而 64 位操作系统的宽度限制为 63 位。 创建域时,地址宽度应对应于设备 (预期附加) 的最大地址宽度。
注解
使用 IOMMU_DOMAIN_CREATE_EX,调用方可以选择将逻辑分配器附加到要创建的域。
与此类域交互时,调用方不需要跟踪以前的映射。 相反,逻辑分配器负责确定在将物理页映射到拥有域时要使用的逻辑地址。 逻辑分配器还负责维护状态,以确保不发生逻辑地址冲突。
目前唯一可用的逻辑分配器类型是 Buddy 分配器。 此分配器倾向于低逻辑地址,并将在 4KB 或 4KB 以上的两个边界的幂上分配逻辑地址。 分配器还通过可用逻辑地址值的缓存进行扩充,以提高可用地址查找的性能。
Buddy 分配器不允许显式地址分配。 使用使用 BuddyAllocator 创建的 [IOMMU_DMA_DOMAIN* 上提供的显式地址调用IOMMU_MAP_IDENTITY_RANGE_EX或IOMMU_MAP_LOGICAL_RANGE_EX将失败。
要求
要求 | 值 |
---|---|
最低受支持的服务器 | Windows Server 2022 |
标头 | wdm.h (包括 Wdm.h) |