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