Condividi tramite


Funzione MmMapIoSpaceEx (wdm.h)

La routine MmMapIoSpaceEx esegue il mapping dell'intervallo di indirizzi fisici specificato allo spazio di sistema non di paging usando la protezione della pagina specificata.

Sintassi

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

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] Protect

Flag bit che specificano la protezione da usare per l'intervallo mappato. Il chiamante deve impostare uno dei bit flag seguenti nel parametro Protect.

Bit flag Significato
PAGE_READONLY L'intervallo mappato può essere letto solo, non scritto.
PAGE_READWRITE L'intervallo mappato può essere letto o scritto.
PAGE_EXECUTE L'intervallo mappato può essere eseguito, ma non letto o scritto.
PAGE_EXECUTE_READ L'intervallo mappato può essere eseguito o letto, ma non scritto.
PAGE_EXECUTE_READWRITE L'intervallo mappato può essere eseguito, letto o scritto.
 

Inoltre, il chiamante può impostare uno (ma non entrambi) dei bit di flag facoltativi seguenti nel parametro Protect.

Bit flag Significato
PAGE_NOCACHE Specifica la memoria non memorizzata nella cache.
PAGE_WRITECOMBINE Specifica la memoria combinata in scrittura (la memoria non deve essere memorizzata nella cache dal processore, ma le scritture nella memoria possono essere combinate dal processore).

Valore restituito

MmMapIoSpaceEx 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.

Osservazioni

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

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 per rendere accessibile la memoria del dispositivo.

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

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 10.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

Vedere anche

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace