Fonction MmMapIoSpace (wdm.h)
La routine MmMapIoSpace mappe la plage d’adresses physiques donnée à l’espace système non paginé.
Syntaxe
PVOID MmMapIoSpace(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] MEMORY_CACHING_TYPE CacheType
);
Paramètres
[in] PhysicalAddress
Spécifie l’adresse physique de début de la plage d’E/S à mapper.
[in] NumberOfBytes
Spécifie une valeur supérieure à zéro, indiquant le nombre d’octets à mapper.
[in] CacheType
Spécifie une valeur MEMORY_CACHING_TYPE , qui indique l’attribut de cache à utiliser pour mapper la plage d’adresses physiques.
Valeur retournée
MmMapIoSpace 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, il 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 . MmMapIoSpace mappe l’adresse physique retournée dans la liste des ressources à une adresse logique via laquelle le pilote peut accéder aux registres d’appareils.
MmMapIoSpace ne doit être utilisé qu’avec les pages verrouillées (elles appartiennent aux pages verrouillées d’un espace MDL ou E/S), sinon le propriétaire de la mémoire pourrait la libérer (ou la mémoire peut être paginée in/out, etc.).
Par exemple, les pilotes d’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 l’appareil 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 |
---|---|
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <=DISPATCH_LEVEL |