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