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 la memoria richiesta non può essere allocata, il valore restituito è NULL. In caso contrario, è l'indirizzo virtuale di base dell'intervallo allocato.
Commenti
MmAllocateNonCachedMemory può essere chiamato da una routine DriverEntry per allocare un blocco di memoria virtuale non memorizzato nella cache per vari buffer specifici del dispositivo. La funzione restituisce sempre un multiplo completo delle dimensioni della pagina di memoria virtuale, della memoria dello spazio di indirizzi del sistema non di paging, 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 cache e coerenza.
Le pagine di memoria fisica restituite da MmAllocateNonCachedMemory non sono in genere pagine contigue.
La memoria allocata MmAllocateNonCachedMemory 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).
Requisiti
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) |