IOMMU_MAP_LOGICAL_RANGE_EX回调函数 (wdm.h)

将物理地址空间映射到 IOMMU_DMA_DOMAIN的逻辑地址空间中。

语法

IOMMU_MAP_LOGICAL_RANGE_EX IommuMapLogicalRangeEx;

NTSTATUS IommuMapLogicalRangeEx(
  [in]           PIOMMU_DMA_DOMAIN Domain,
  [in]           ULONG Permissions,
  [in]           PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
  [in, optional] PIOMMU_DMA_LOGICAL_ADDRESS ExplicitLogicalAddress,
  [in, optional] PIOMMU_DMA_LOGICAL_ADDRESS MinLogicalAddress,
  [in, optional] PIOMMU_DMA_LOGICAL_ADDRESS MaxLogicalAddress,
  [out]          PIOMMU_DMA_LOGICAL_ADDRESS LogicalAddressOut
)
{...}

参数

[in] Domain

指向映射逻辑地址所属 IOMMU_DMA_DOMAIN 的指针。 域的类型必须为 DomainTypeTranslate。 有关域类型的详细信息,请参阅 IOMMU_DMA_DOMAIN_TYPE

[in] Permissions

一个位字段,表示要为所映射的范围设置的权限。 有关可用权限位,请参阅备注。

[in] PhysicalAddressToMap

将映射到域的 IOMMU_MAP_PHYSICAL_ADDRESS

[in, optional] ExplicitLogicalAddress

物理地址应映射到的域逻辑地址。 如果域不是使用已注册的逻辑分配器创建的,则此字段是必需的。 如果域是使用不支持显式逻辑地址分配的已注册逻辑分配器创建的,则此字段必须为 NULL

[in, optional] MinLogicalAddress

物理地址应映射到的最小 (包含) 允许的逻辑地址。 如果未使用已注册的逻辑分配器创建域,则将忽略此字段。

[in, optional] MaxLogicalAddress

物理地址应映射到的最大 ((包括) 允许的逻辑地址)。 如果未使用已注册的逻辑分配器创建域,则将忽略此字段。

[out] LogicalAddressOut

从映射中返回生成的逻辑地址。

返回值

如果 操作成功,STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。

返回代码 说明
STATUS_INVALID_PARAMETER_1 提供的域的类型不是 DomainTypeTranslate
STATUS_INVALID_PARAMETER_3 提供的 IOMMU_MAP_PHYSICAL_ADDRESS 不表示页面对齐的物理内存,其大小是PAGE_SIZE的倍数。
STATUS_INVALID_PARAMETER_4 提供的 ExplicitLogicalAddress 不是页面对齐的。
STATUS_INVALID_PARAMETER_MIX 无法满足提供的最小和最大逻辑地址。
STATUS_IN_USE ExplicitLogicalAddress 已映射或部分映射。
STATUS_NOT_SUPPORTED 为具有不允许显式逻辑地址分配的逻辑分配器的域提供了 ExplicitLogicalAddress。 或者,没有为没有逻辑分配器的域提供 ExplicitLogicalAddress。

有关详细信息,请参阅 NTSTATUS 值

注解

若要取消映射 IOMMU_MAP_LOGICAL_RANGE_EX创建的逻辑地址,请使用 IOMMU_UNMAP_LOGICAL_RANGE;逻辑地址范围取消映射当前没有 Ex 等效项。

权限字段是一个位字段,用于描述要映射的页面的访问权限。

位的定义如下:

Bit 0 = Read Access

Bit 1 = Write Access

Bits 31-2 = Reserved (0)

要求

要求
最低受支持的服务器 Windows Server 2022
标头 wdm.h (包括 Wdm.h)

另请参阅

IOMMU_DMA_DOMAIN_TYPE

IOMMU_MAP_PHYSICAL_ADDRESS

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX