MmMapIoSpace, fonction (wdm.h)
La routine MmMapIoSpace mappe la plage d’adresses physique 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é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] CacheType
Spécifie une valeur MEMORY_CACHING_TYPE, qui indique l’attribut de cache à utiliser pour mapper la plage d’adresses physique.
Valeur de retour
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 par le biais de laquelle le pilote peut accéder aux registres d’appareils.
mmMapIoSpace ne doit être utilisé que avec des pages verrouillées (appartiennent aux pages verrouillées d’un espace MDL ou E/S), sinon le propriétaire de la mémoire peut le libérer (ou la mémoire peut être paginée, 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 des adresses Bus-Relative aux adresses virtuelles.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <=DISPATCH_LEVEL |