Afficher en anglais

Partage via


fonction de rappel IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE (wdm.h)

Préalloue l’espace d’adressage logique qui peut être utilisé pour les mappages futurs. Cela permet à un pilote de garantir la progression vers l’avant pour les appels map/unmap futurs.

Syntaxe

C++
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
)
{...}

Paramètres

[in] Domain

Pointeur vers le IOMMU_DMA_DOMAIN auquel appartient l’adresse logique réservée. Le domaine doit être de type DomainTypeTranslate. Pour plus d’informations sur les types de domaine, consultez IOMMU_DMA_DOMAIN_TYPE.

[in] Size

Taille, en octets, de la plage d’adresses logique à réserver. Cette valeur doit représenter un nombre entier de pages.

[in, optional] ExplicitLogicalAddress

Adresse logique de domaine qui doit être réservée. Si le domaine n’a pas été créé avec un allocateur logique inscrit, ce champ est requis. Si le domaine a été créé avec un allocateur logique inscrit qui ne prend pas en charge l’allocation d’adresses logiques explicites, ce champ doit être NULL.

[in, optional] MinLogicalAddress

Adresse logique minimale (inclusive) autorisée qui peut être réservée. Si le domaine n’a pas été créé avec un allocateur logique inscrit, ce champ est ignoré.

[in, optional] MaxLogicalAddress

Adresse logique maximale (inclusive) autorisée qui peut être réservée. Si le domaine n’a pas été créé avec un allocateur logique inscrit, ce champ est ignoré.

[out] LogicalAddressToken

Retourne une IOMMU_DMA_LOGICAL_ADDRESS_TOKEN représentant la plage d’adresses logique réservée.

Valeur de retour

STATUS_SUCCESS si l’opération réussit. Les valeurs de retour d’erreur possibles incluent les codes d’état suivants.

Retourner le code Description
STATUS_INVALID_PARAMETER_1 Le domaine fourni n’est pas de type DomainTypeTranslate.
STATUS_INVALID_PARAMETER_2 La taille fournie n’est pas un multiple de PAGE_SIZE.
STATUS_INVALID_PARAMETER_3 ExplicitLogicalAddress fourni n’est pas aligné sur la page.
STATUS_INVALID_PARAMETER_MIX Les adresses logiques minimales et maximales fournies n’ont pas pu être satisfaites.
STATUS_IN_USE ExplicitLogicalAddress est déjà mappé ou partiellement mappé.
STATUS_NOT_SUPPORTED Un explicitLogicalAddress a été fourni pour un domaine avec un allocateur logique qui n’autorise pas l’allocation d’adresses logiques explicites. Ou un explicitLogicalAddress n’a pas été fourni pour un domaine sans allocator logique.

Pour plus d’informations, consultez valeurs NTSTATUS.

Remarques

Les jetons d’adresse logique peuvent être libérés via IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE.

Les jetons d’adresse logique doivent avoir des parties de leurs plages d’adresses logiques mappées à des adresses physiques et non mappées à partir d’adresses physiques via IOMMU_MAP_RESERVED_LOGICAL_RANGE et IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.

Exigences

Exigence Valeur
serveur minimum pris en charge Windows Server 2022
d’en-tête wdm.h (include Wdm.h)

Voir aussi

IOMMU_DMA_LOGICAL_ADDRESS_TOKEN

IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE

IOMMU_MAP_RESERVED_LOGICAL_RANGE

IOMMU_UNMAP_RESERVED_LOGICAL_RANGE