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 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)

Vedere anche

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory