Condividi tramite


Funzione ExAllocatePoolPriorityZero (wdm.h)

Attenzione

Microsoft è a conoscenza di un problema con ExAllocatePoolPriorityZero che può causare un'allocazione che non viene zero in Windows 10 versione 1909. Questo problema è stato risolto in un aggiornamento della sicurezza di WDK per Windows 10, versione 2004 e Enterprise WDK (EWDK) per Windows 10, versione 2004 il 16 dicembre 2020. Per informazioni sul download dell'ultima WDK, vedere Scaricare Windows Driver Kit (WDK).

Questa routine è un wrapper per e un'opzione di sostituzione consigliata per ExAllocatePoolWithTagPriority.

ExAllocatePoolPriorityZero alloca la memoria del pool del tipo specificato.

È identico a ExAllocatePoolWithTagPriority , ad eccezione di zero inizializza la memoria allocata. Se questo non è desiderato, usare invece ExAllocatePoolPriorityUninitialized .

Sintassi

PVOID ExAllocatePoolPriorityZero(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag,
  EX_POOL_PRIORITY                               Priority
);

Parametri

PoolType

Tipo di memoria del pool da allocare. Per una descrizione dei tipi di memoria del pool disponibili, vedere POOL_TYPE.

È possibile modificare il valore di enumerazione eseguendo un valore bit per bit-OR con il flag POOL_RAISE_IF_ALLOCATION_FAILURE definito in wdm.h. Questo flag causa la generazione di un'eccezione se la richiesta non può essere soddisfatta. L'uso di questo flag non è consigliato perché è costoso.

Analogamente, è possibile modificare il valore PoolType in bit per bit-ORing con il flag POOL_COLD_ALLOCATION (definito anche in wdm.h) come hint per il kernel per allocare la memoria dalle pagine che potrebbero essere impaginate rapidamente. Per ridurre la quantità di memoria del pool residente il più possibile, non è consigliabile fare riferimento a queste allocazioni di frequente. Il flag di POOL_COLD_ALLOCATION è solo consultivo.

NumberOfBytes

Numero di byte da allocare.

Tag

Tag del pool da usare per la memoria allocata. Specificare il tag del pool come valore letterale di carattere diverso da zero di uno a quattro caratteri delimitati da virgolette singole (ad esempio, Tag1). La stringa viene in genere specificata in ordine inverso , ad esempio 1gaT. Ogni carattere ASCII nel tag deve essere un valore nell'intervallo 0x20 (spazio) per 0x7E (tilde). Ogni percorso del codice di allocazione deve usare un tag di pool univoco per aiutare i debugger e i verificatori a identificare il percorso del codice.

Priority

Valore di enumerazione EX_POOL_PRIORITY che specifica la priorità di questa richiesta.

Valore restituito

ExAllocatePoolPriorityZero restituisce NULL se non è presente memoria insufficiente nel pool gratuito per soddisfare la richiesta a meno che non sia specificato POOL_RAISE_IF_ALLOCATION_FAILURE. In caso contrario, la routine restituisce un puntatore alla memoria allocata.

Commenti

Per eseguire le versioni di Windows prima di Windows 10 versione 2004, il driver deve definire POOL_ZERO_DOWN_LEVEL_SUPPORT e chiamare ExInitializeDriverRuntime prima di chiamare questa funzione.

Per altre indicazioni, vedere la sezione Osservazioni di ExAllocatePoolWithTagPriority .

Requisiti

Requisito Valore
Client minimo supportato Richiede WDK per Windows 10 versione 2004. Destinazione Windows 7 e versioni successive del sistema operativo Windows.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (vedere sezione Osservazioni)
Regole di conformità DDI HwStorPortProhibitedDDDIs, IrqlExAllocatePool, IrqlExFree2, SpNoWait, StorPortStartIo

Vedi anche

ExAllocatePoolWithTagPriority

ExAllocatePoolPriorityUninitialized