Funzione MmAllocateNonCachedMemory (ntddk.h)
La routine MmAllocateNonCachedMemory alloca un intervallo di indirizzi virtuali di memoria non memorizzata nella cache e allineata alla cache.
Sintassi
PVOID MmAllocateNonCachedMemory(
[in] SIZE_T NumberOfBytes
);
Parametri
[in] NumberOfBytes
Specifica le dimensioni in byte dell'intervallo da allocare.
Valore restituito
Se non è possibile allocare la memoria richiesta, il valore restituito è NULL. In caso contrario, è l'indirizzo virtuale di base dell'intervallo allocato.
Osservazioni
MmAllocateNonCachedMemory può essere chiamato da una routine driverEntry per allocare un blocco di memoria virtuale non memorizzato nella cache per diversi buffer specifici del dispositivo. La funzione restituisce sempre un multiplo completo delle dimensioni della pagina di memoria virtuale, di memoria non di paging dello spazio degli indirizzi del sistema, indipendentemente dalle dimensioni di allocazione richieste.
Le allocazioni non memorizzate nella cache sono allineate su un multiplo integrale delle dimensioni della riga di cache dei dati del processore per evitare problemi di coerenza e cache.
Le pagine di memoria fisica che MmAllocateNonCachedMemory restituite non sono in genere pagine contigue.
La memoria che MmAllocateNonCachedMemory alloca non è inizializzata. Un driver in modalità kernel deve prima zero questa memoria se lo rende visibile al software in modalità utente (per evitare la perdita di contenuti potenzialmente privilegiati).
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ntddk.h (include Ntddk.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | <=APC_LEVEL |
regole di conformità DDI | HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport) |