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.
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
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.
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.
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.
Exigence | Valeur |
---|---|
serveur minimum pris en charge | Windows Server 2022 |
d’en-tête | wdm.h (include Wdm.h) |
IOMMU_DMA_LOGICAL_ADDRESS_TOKEN
IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE