Funzione MmMapIoSpaceEx (wdm.h)
La routine MmMapIoSpaceEx esegue il mapping dell'intervallo di indirizzi fisici specificato allo spazio di sistema non a pagina 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 da eseguire il mapping.
[in] NumberOfBytes
Specifica un valore maggiore di zero, che indica il numero di byte da mappare.
[in] Protect
Flag bit che specificano la protezione da usare per l'intervallo mappato. Il chiamante deve impostare uno dei bit di flag seguenti nel parametro Protect .
Flag bit | 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 seguenti bit di flag facoltativi nel parametro Protect .
Flag bit | Significato |
---|---|
PAGE_NOCACHE | Specifica 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.
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 . 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 accessibili tali buffer 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 |
---|---|
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 |