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) |