IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE fonction de rappel (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 des futurs appels map/unmap.
Syntaxe
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 appartiendra 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 logiques à 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 obligatoire. Si le domaine a été créé avec un allocateur logique inscrit qui ne prend pas en charge l’allocation d’adresses logiques explicite, 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 logiques réservées.
Valeur retournée
STATUS_SUCCESS si l’opération réussit. Les valeurs de retour d’erreur possibles incluent les codes status suivants.
Code de retour | 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 | L’adresse ExplicitLogicalAddress fournie n’est pas alignée 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 | Une adresse ExplicitLogicalAddress a été fournie 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 allocateur 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 et non mappées à partir d’adresses physiques via IOMMU_MAP_RESERVED_LOGICAL_RANGE et IOMMU_UNMAP_RESERVED_LOGICAL_RANGE.
Configuration requise
Condition requise | Valeur |
---|---|
Serveur minimal pris en charge | Windows Server 2022 |
En-tête | wdm.h (include Wdm.h) |
Voir aussi
IOMMU_DMA_LOGICAL_ADDRESS_TOKEN
IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE