MmMapIoSpace-Funktion (wdm.h)
Die MmMapIoSpace Routine ordnet den angegebenen physischen Adressbereich nicht seitenseitigem Systembereich zu.
Syntax
PVOID MmMapIoSpace(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] MEMORY_CACHING_TYPE CacheType
);
Parameter
[in] PhysicalAddress
Gibt die Startadresse des E/A-Bereichs an, der zugeordnet werden soll.
[in] NumberOfBytes
Gibt einen Wert an, der größer als 0 ist und die Anzahl der Bytes angibt, die zugeordnet werden sollen.
[in] CacheType
Gibt einen MEMORY_CACHING_TYPE Wert an, der das Cache-Attribut angibt, das zum Zuordnen des physischen Adressbereichs verwendet werden soll.
Rückgabewert
MmMapIoSpace- gibt die virtuelle Basisadresse zurück, die die physische Basisadresse für den Bereich zuordnet. Wenn der Speicherplatz für die Zuordnung des Bereichs nicht ausreicht, wird NULL-zurückgegeben.
Bemerkungen
Ein Treiber muss diese Routine während des Gerätestarts aufrufen, wenn er übersetzte Ressourcen vom Typ CmResourceTypeMemory in einer CM_PARTIAL_RESOURCE_DESCRIPTOR-Struktur empfängt. MmMapIoSpace die in der Ressourcenliste zurückgegebene physische Adresse einer logischen Adresse zuordnet, über die der Treiber auf Geräteregister zugreifen kann.
MmMapIoSpace- sollte nur mit Seiten verwendet werden, die gesperrt sind (gehören zu den gesperrten Seiten eines MDL- oder E/A-Speicherplatzes), andernfalls könnte der Besitzer des Speichers ihn freigeben (oder der Speicher könnte ein-/ausgelagert werden usw.).
Beispielsweise können Treiber von PIO-Geräten, die langfristige E/A-Puffer zuweisen, diese Routine aufrufen, um solche Puffer zugänglich zu machen oder den Gerätespeicher barrierefrei zu machen.
Weitere Informationen zur Verwendung dieser Routine finden Sie unter Zuordnung Bus-Relative Adressen zu virtuellen Adressen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | IRQL-<=DISPATCH_LEVEL |