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