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 |