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_RANGEIOMMU_UNMAP_RESERVED_LOGICAL_RANGE将逻辑地址范围的部分映射到物理地址,并从物理地址取消映射。

要求

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

另请参阅

IOMMU_DMA_LOGICAL_ADDRESS_TOKEN

IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE

IOMMU_MAP_RESERVED_LOGICAL_RANGE

IOMMU_UNMAP_RESERVED_LOGICAL_RANGE