Condividi tramite


Funzione MmMapIoSpace (wdm.h)

La routine MmMapIoSpace esegue il mapping dell'intervallo di indirizzi fisico specificato allo spazio di sistema non in pagine.

Sintassi

PVOID MmMapIoSpace(
  [in] PHYSICAL_ADDRESS    PhysicalAddress,
  [in] SIZE_T              NumberOfBytes,
  [in] MEMORY_CACHING_TYPE CacheType
);

Parametri

[in] PhysicalAddress

Specifica l'indirizzo fisico iniziale dell'intervallo di I/O di cui eseguire il mapping.

[in] NumberOfBytes

Specifica un valore maggiore di zero, che indica il numero di byte di cui eseguire il mapping.

[in] CacheType

Specifica un valore MEMORY_CACHING_TYPE , che indica l'attributo della cache da usare per eseguire il mapping dell'intervallo di indirizzi fisico.

Valore restituito

MmMapIoSpace restituisce l'indirizzo virtuale di base che esegue il mapping dell'indirizzo fisico di base per l'intervallo. Se lo spazio per il mapping dell'intervallo non è sufficiente, restituisce NULL.

Commenti

Un driver deve chiamare questa routine durante l'avvio del dispositivo se riceve risorse tradotte di tipo CmResourceTypeMemory in una struttura CM_PARTIAL_RESOURCE_DESCRIPTOR . MmMapIoSpace esegue il mapping dell'indirizzo fisico restituito nell'elenco di risorse a un indirizzo logico tramite il quale il driver può accedere ai registri del dispositivo.

MmMapIoSpace deve essere usato solo con pagine bloccate (appartengono alle pagine bloccate di uno spazio MDL o I/O), altrimenti il proprietario della memoria potrebbe liberarlo (o la memoria potrebbe essere inserita in/out e così via).

Ad esempio, i driver dei dispositivi PIO che allocano buffer di I/O a lungo termine possono chiamare questa routine per rendere tali buffer accessibili o rendere accessibile la memoria del dispositivo.

Per altre informazioni sull'uso di questa routine, vedere Mapping di indirizzi Bus-Relative a indirizzi virtuali.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

Vedi anche

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace