Condividi tramite


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)

Vedi anche

ExAllocatePoolWithQuotaTag

ExFreePool

FsRtlAllocatePoolWithQuota