Funzione FltAllocatePoolAlignedWithTag (fltkernel.h)

FltAllocatePoolAlignedWithTag alloca un buffer allineato al dispositivo da usare in un'operazione di I/O non memorizzata nella cache.

Sintassi

PVOID FLTAPI FltAllocatePoolAlignedWithTag(
  [in] PFLT_INSTANCE Instance,
  [in] POOL_TYPE     PoolType,
  [in] SIZE_T        NumberOfBytes,
  [in] ULONG         Tag
);

Parametri

[in] Instance

Puntatore dell'istanza opaca per un'istanza del driver minifilter di proprietà del chiamante collegata al volume. Questo parametro è obbligatorio e non può essere NULL.

[in] PoolType

Tipo di pool da allocare. I tipi validi sono:

NonPagedPool

PagedPool

NonPagedPoolCacheAligned

PagedPoolCacheAligned

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

[in] NumberOfBytes

Numero di byte da allocare. Questo parametro è obbligatorio e può essere zero.

[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

Se non è disponibile un pool gratuito sufficiente per soddisfare la richiesta, FltAllocatePoolAlignedWithTag restituisce un puntatore NULL . In caso contrario, FltAllocatePoolAlignedWithTag restituisce un puntatore al buffer appena allocato.

Commenti

FltAllocatePoolAlignedWithTag alloca un buffer allineato in base al dispositivo sottostante per il volume specificato. Tali buffer allineati al dispositivo sono necessari per le operazioni di I/O non memorizzate nella cache. Possono essere usati anche per le operazioni di I/O memorizzate nella cache. Pertanto, quando si chiamano routine che eseguono operazioni di I/O non memorizzate nella cache, ad esempio FltReadFile e FltWriteFile, i driver minifilter devono chiamare FltAllocatePoolAlignedWithTag anziché ExAllocatePoolWithTag.

Se il chiamante specifica un valore pari a zero per il parametro NumberOfBytes , FltAllocatePoolAlignedWithTag alloca la quantità di memoria più piccola che soddisfa il requisito di allineamento.

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.

Quando il buffer allocato da FltAllocatePoolAlignedWithTag non è più necessario, il chiamante è responsabile della liberazione chiamando FltFreePoolAlignedWithTag.

I chiamanti di FltAllocatePoolAlignedWithTag possono essere eseguiti in IRQL DISPATCH_LEVEL solo se è specificato unOggetto XxxPoolType nonPaged. In caso contrario, i chiamanti devono essere in esecuzione in IRQL <= APC_LEVEL.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include Fltkernel.h)
Libreria FltMgr.lib
IRQL <= APC_LEVEL (vedere la sezione Osservazioni)

Vedi anche

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile