Condividi tramite


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)

Vedi anche

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory