Funzione ExAllocatePoolQuotaZero (wdm.h)
Cautela
Microsoft è a conoscenza di un problema con ExAllocatePoolQuotaZero che può causare un'allocazione che non viene azzerato 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 della versione più recente di WDK, vedere Scaricare Windows Driver Kit (WDK).
Questa routine è un wrapper per e un'opzione di sostituzione consigliata per ExAllocatePoolWithQuotaTag.
ExAllocatePoolQuotaZero alloca la memoria del pool del tipo specificato e restituisce un puntatore al blocco allocato. È identico a exAllocatePoolWithQuotaTag tranne che zero inizializza la memoria allocata. Se non si desidera, usare exAllocatePoolQuotaUninitialized.
Sintassi
PVOID ExAllocatePoolQuotaZero(
__drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
SIZE_T NumberOfBytes,
ULONG Tag
);
Parametri
PoolType
Tipo di memoria del pool da allocare. Per una descrizione dei tipi di memoria del pool disponibili, vedere POOL_TYPE.
Analogamente, è possibile modificare il valore PoolType bit per bit con questo valore con il flag POOL_COLD_ALLOCATION (definito anche in wdm.h
) come suggerimento al kernel per allocare la memoria dalle pagine che è probabile che vengano visualizzate rapidamente. Per ridurre la quantità di memoria del pool residente il più possibile, non è consigliabile fare riferimento a queste allocazioni di frequente. Il flag 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 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 compreso nell'intervallo 0x20 (spazio) per 0x7E (tilde). Ogni percorso del codice di allocazione deve usare un tag pool univoco per aiutare i debugger e i verificatori a identificare il percorso del codice.
Valore restituito
ExAllocatePoolQuotaZero restituisce un puntatore al pool allocato.
Se la richiesta non può essere soddisfatta, ExAllocatePoolQuotaZero genera un'eccezione a meno che non venga specificata POOL_QUOTA_FAIL_INSTEAD_OF_RAISE. L'uso di POOL_QUOTA_FAIL_INSTEAD_OF_RAISE è preferibile per motivi di prestazioni.
Osservazioni
Per eseguire nelle versioni di Windows precedenti a Windows 10 versione 2004, il driver deve definire POOL_ZERO_DOWN_LEVEL_SUPPORT e chiamare ExInitializeDriverRuntime prima di chiamare questa funzione.
Questa routine viene chiamata dai driver di livello più alto che allocano memoria per soddisfare una richiesta nel contesto del processo che ha originariamente effettuato la richiesta di I/O. I driver di livello inferiore chiamano ExAllocatePoolZero.
Per altre indicazioni, vedere la sezione Osservazioni di ExAllocatePoolWithQuotaTag.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Richiede WDK per Windows 10 versione 2004. È destinato a 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 la sezione Osservazioni) |
regole di conformità DDI | HwStorPortProhibitedDDIs, SpNoWait, StorPortStartIo |