IOMMU_MAP_LOGICAL_RANGE_EX fonction de rappel (wdm.h)
Mappe l’espace d’adressage physique dans l’espace d’adressage logique d’un IOMMU_DMA_DOMAIN.
Syntaxe
IOMMU_MAP_LOGICAL_RANGE_EX IommuMapLogicalRangeEx;
NTSTATUS IommuMapLogicalRangeEx(
[in] PIOMMU_DMA_DOMAIN Domain,
[in] ULONG Permissions,
[in] PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
[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 LogicalAddressOut
)
{...}
Paramètres
[in] Domain
Pointeur vers le IOMMU_DMA_DOMAIN auquel l’adresse logique mappée appartiendra. Le domaine doit être de type DomainTypeTranslate. Pour plus d’informations sur les types de domaine, consultez IOMMU_DMA_DOMAIN_TYPE.
[in] Permissions
Champ de bits représentant les autorisations à définir pour la plage en cours de mappage. Consultez Remarques pour connaître les bits d’autorisation disponibles.
[in] PhysicalAddressToMap
Le IOMMU_MAP_PHYSICAL_ADDRESS qui sera mappé au domaine.
[in, optional] ExplicitLogicalAddress
Adresse logique de domaine à laquelle l’adresse physique doit être mappé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 explicites, ce champ doit avoir la valeur NULL.
[in, optional] MinLogicalAddress
Adresse logique autorisée minimale (inclusive) à laquelle l’adresse physique doit être mappée. Si le domaine n’a pas été créé avec un allocateur logique inscrit, ce champ est ignoré.
[in, optional] MaxLogicalAddress
Adresse logique autorisée maximale (inclusive) à laquelle l’adresse physique doit être mappée. Si le domaine n’a pas été créé avec un allocateur logique inscrit, ce champ est ignoré.
[out] LogicalAddressOut
Retourne l’adresse logique résultante du mappage.
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_3 | Le IOMMU_MAP_PHYSICAL_ADDRESS fourni ne représente pas la mémoire physique alignée sur la page et dont la taille est un multiple de PAGE_SIZE. |
STATUS_INVALID_PARAMETER_4 | 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 ExpliciteLogicalAddress a été fournie pour un domaine avec un allocateur logique qui n’autorise pas l’allocation d’adresses logiques explicites. Ou une adresse ExpliciteLogicalAddress n’a pas été fournie pour un domaine sans allocateur logique. |
Pour plus d’informations, consultez Valeurs NTSTATUS.
Remarques
Pour annuler le mappage de l’adresse logique créée par IOMMU_MAP_LOGICAL_RANGE_EX, utilisez IOMMU_UNMAP_LOGICAL_RANGE ; il n’existe actuellement aucun équivalent Ex pour le démappage de plage d’adresses logique.
Le champ autorisations est un champ de bits qui décrit les autorisations d’accès pour les pages à mapper.
Les bits sont définis comme suit :
Bit 0 = Read Access
Bit 1 = Write Access
Bits 31-2 = Reserved (0)
Configuration requise
Condition requise | Valeur |
---|---|
Serveur minimal pris en charge | Windows Server 2022 |
En-tête | wdm.h (inclure Wdm.h) |