IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE回调函数 (wdm.h)
预先分配可用于将来映射的逻辑地址空间。 这样,驱动程序就能够确保将来的映射/取消映射调用向前推进。
语法
IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE IommuReserveLogicalAddressRange;
NTSTATUS IommuReserveLogicalAddressRange(
[in] PIOMMU_DMA_DOMAIN Domain,
[in] SIZE_T Size,
[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_TOKEN *LogicalAddressToken
)
{...}
参数
[in] Domain
指向保留逻辑地址所属 IOMMU_DMA_DOMAIN 的指针。 域的类型必须为 DomainTypeTranslate。 有关域类型的详细信息,请参阅 IOMMU_DMA_DOMAIN_TYPE。
[in] Size
要保留的逻辑地址范围的大小(以字节为单位)。 此值必须表示整个页数。
[in, optional] ExplicitLogicalAddress
应保留的域逻辑地址。 如果域不是使用已注册的逻辑分配器创建的,则此字段是必需的。 如果域是使用不支持显式逻辑地址分配的已注册逻辑分配器创建的,则此字段必须为 NULL。
[in, optional] MinLogicalAddress
可保留的最小 (包含) 允许的逻辑地址。 如果未使用已注册的逻辑分配器创建域,则将忽略此字段。
[in, optional] MaxLogicalAddress
可以保留的最大 (包含) 允许的逻辑地址。 如果未使用已注册的逻辑分配器创建域,则将忽略此字段。
[out] LogicalAddressToken
返回表示保留逻辑地址范围的 IOMMU_DMA_LOGICAL_ADDRESS_TOKEN 。
返回值
如果 操作成功,STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。
返回代码 | 说明 |
---|---|
STATUS_INVALID_PARAMETER_1 | 提供的域的类型不是 DomainTypeTranslate。 |
STATUS_INVALID_PARAMETER_2 | 提供的大小不是PAGE_SIZE的倍数。 |
STATUS_INVALID_PARAMETER_3 | 提供的 ExplicitLogicalAddress 不是页面对齐的。 |
STATUS_INVALID_PARAMETER_MIX | 无法满足提供的最小和最大逻辑地址。 |
STATUS_IN_USE | ExplicitLogicalAddress 已映射或部分映射。 |
STATUS_NOT_SUPPORTED | 为具有不允许显式逻辑地址分配的逻辑分配器的域提供了 ExplicitLogicalAddress。 或者,没有为没有逻辑分配器的域提供 ExplicitLogicalAddress。 |
有关详细信息,请参阅 NTSTATUS 值。
注解
可以通过 IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE释放逻辑地址令牌。
逻辑地址令牌应通过 IOMMU_MAP_RESERVED_LOGICAL_RANGE 和 IOMMU_UNMAP_RESERVED_LOGICAL_RANGE将逻辑地址范围的部分映射到物理地址,并从物理地址取消映射。
要求
要求 | 值 |
---|---|
最低受支持的服务器 | Windows Server 2022 |
标头 | wdm.h (包括 Wdm.h) |
另请参阅
IOMMU_DMA_LOGICAL_ADDRESS_TOKEN
IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE