Fonction MmMapIoSpaceEx (wdm.h)

La routine MmMapIoSpaceEx mappe la plage d’adresses physiques donnée à l’espace système non paginé à l’aide de la protection de page spécifiée.

Syntaxe

PVOID MmMapIoSpaceEx(
  [in] PHYSICAL_ADDRESS PhysicalAddress,
  [in] SIZE_T           NumberOfBytes,
  [in] ULONG            Protect
);

Paramètres

[in] PhysicalAddress

Spécifie l’adresse physique de départ de la plage d’E/S à mapper.

[in] NumberOfBytes

Spécifie une valeur supérieure à zéro, indiquant le nombre d’octets à mapper.

[in] Protect

Indicateurs de bits qui spécifient la protection à utiliser pour la plage mappée. L’appelant doit définir l’un des bits d’indicateur suivants dans le paramètre Protect .

Bit d’indicateur Signification
PAGE_READONLY La plage mappée peut uniquement être lue, pas écrite.
PAGE_READWRITE La plage mappée peut être lue ou écrite.
PAGE_EXECUTE La plage mappée peut être exécutée, mais pas en lecture ou en écriture.
PAGE_EXECUTE_READ La plage mappée peut être exécutée ou lue, mais pas écrite.
PAGE_EXECUTE_READWRITE La plage mappée peut être exécutée, lue ou écrite.
 

En outre, l’appelant peut définir un des bits d’indicateur facultatifs suivants (mais pas les deux) dans le paramètre Protect .

Bit d’indicateur Signification
PAGE_NOCACHE Spécifie la mémoire non mise en cache.
PAGE_WRITECOMBINE Spécifie la mémoire combinée en écriture (la mémoire ne doit pas être mise en cache par le processeur, mais les écritures dans la mémoire peuvent être combinées par le processeur).

Valeur retournée

MmMapIoSpaceEx retourne l’adresse virtuelle de base qui mappe l’adresse physique de base pour la plage. Si l’espace pour le mappage de la plage est insuffisant, elle retourne NULL.

Remarques

Un pilote doit appeler cette routine au démarrage de l’appareil s’il reçoit des ressources traduites de type CmResourceTypeMemory dans une structure CM_PARTIAL_RESOURCE_DESCRIPTOR . MmMapIoSpaceEx mappe l’adresse physique retournée dans la liste de ressources à une adresse virtuelle par le biais de laquelle le pilote peut accéder aux registres d’appareils.

Par exemple, les pilotes des appareils PIO qui allouent des mémoires tampons d’E/S à long terme peuvent appeler cette routine pour rendre ces mémoires tampons accessibles ou pour rendre la mémoire de périphérique accessible.

Pour plus d’informations sur l’utilisation de cette routine, consultez Mappage d’adresses Bus-Relative à des adresses virtuelles.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 10.
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

Voir aussi

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace