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)

另请参阅

IOMMU_DOMAIN_CREATE_EX

IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE