Macro FsRtlAllocatePoolWithQuotaTag (ntifs.h)
La routine FsRtlAllocatePoolWithQuotaTag alloca la memoria del pool e la quota di ricarica rispetto al processo corrente.
Sintassi
void FsRtlAllocatePoolWithQuotaTag(
[in] PoolType,
[in] NumberOfBytes,
[in] Tag
);
Parametri
[in] PoolType
Tipo di pool da allocare. I tipi validi sono:
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
I tipi di pool NonPagedPoolMustSucceed e NonPagedPoolCacheAlignedMustS sono obsoleti e non devono più essere usati.
[in] NumberOfBytes
Numero di byte da allocare.
[in] Tag
Specifica il tag del pool per la memoria allocata. I driver specificano in genere il tag del pool come stringa da uno a quattro caratteri ASCII a 7 bit, delimitati da virgolette singole ,ad esempio 'abcd'. Questo parametro è obbligatorio e non può essere zero.
Valore restituito
nessuno
Osservazioni
Se si verifica un errore di allocazione del pool, FsRtlAllocatePoolWithQuotaTag genera un'eccezione STATUS_INSUFFICIENT_RESOURCES. Per controllare se si verifica questo errore di allocazione del pool, il driver deve eseguire il wrapping della chiamata a FsRtlAllocatePoolWithQuotaTag in un'istruzione try-except o try-finally .
Il sistema associa il tag del pool specificato dal parametro Tag al buffer allocato. Gli strumenti di programmazione, ad esempio Il debugger di Windows (WinDbg), possono visualizzare il tag del pool associato a ogni buffer allocato. Il valore del tag del pool viene in genere visualizzato in ordine inverso. Ad esempio, se un chiamante passa "Fred" come valore del parametro Tag , questo valore viene visualizzato come "derF" se il pool viene sottoposto a dump o quando si verifica l'utilizzo del pool nel debugger.
Per altre informazioni sulla gestione della memoria, vedere Gestione della memoria.
La memoria allocata da FsRtlAllocatePoolWithQuotaTag 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).
I chiamanti di FsRtlAllocatePoolWithQuotaTag devono essere in esecuzione in IRQL <= DISPATCH_LEVEL. Un chiamante in DISPATCH_LEVEL deve specificare un oggetto NonPaged_____XxxPoolType. In caso contrario, il chiamante deve essere in esecuzione nel DISPATCH_LEVEL IRQL < .
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (vedere la sezione Osservazioni) |