Partager via


fonction de rappel IOMMU_MAP_LOGICAL_RANGE_EX (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 appartient l’adresse logique mappée. 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 mappée. Consultez les remarques relatives aux bits d’autorisation disponibles.

[in] PhysicalAddressToMap

La IOMMU_MAP_PHYSICAL_ADDRESS qui sera mappée 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 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 à 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 maximale (inclusive) autorisée à 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 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_3 La IOMMU_MAP_PHYSICAL_ADDRESS fournie ne représente pas la mémoire physique alignée sur la page et a une taille multiple de PAGE_SIZE.
STATUS_INVALID_PARAMETER_4 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

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 pas d’é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 que les pages soient mappées.

Les bits sont définis comme suit :

Bit 0 = Read Access

Bit 1 = Write Access

Bits 31-2 = Reserved (0)

Exigences

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

Voir aussi

IOMMU_DMA_DOMAIN_TYPE

IOMMU_MAP_PHYSICAL_ADDRESS

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX