FltAllocatePoolAlignedWithTag-Funktion (fltkernel.h)

FltAllocatePoolAlignedWithTag weist einen geräteorientierten Puffer für die Verwendung in einem nicht zwischengespeicherten E/A-Vorgang zu.

Syntax

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

Parameter

[in] Instance

Undurchsichtiger instance Zeiger für einen anrufereigenen Minifiltertreiber instance, der an das Volume angefügt ist. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in] PoolType

Typ des zuzuweisenden Pools. Einer der folgenden:

NonPagedPool

PagedPool

NonPagedPoolCacheAligned

PagedPoolCacheAligned

Eine Beschreibung der verfügbaren Poolspeichertypen finden Sie unter POOL_TYPE .

[in] NumberOfBytes

Anzahl der zuzuordnenden Bytes. Dieser Parameter ist erforderlich und kann null sein.

[in] Tag

Gibt das Pooltag für den zugewiesenen Arbeitsspeicher an. Treiber geben das Pooltag normalerweise als Zeichenfolge aus ein bis vier 7-Bit-ASCII-Zeichen an, die durch einzelne Anführungszeichen (z. B. "abcd") getrennt sind. Dieser Parameter ist erforderlich und darf nicht 0 sein.

Rückgabewert

Wenn nicht genügend freier Pool verfügbar ist, um die Anforderung zu erfüllen, gibt FltAllocatePoolAlignedWithTag einen NULL-Zeiger zurück. Andernfalls gibt FltAllocatePoolAlignedWithTag einen Zeiger auf den neu zugewiesenen Puffer zurück.

Hinweise

FltAllocatePoolAlignedWithTag weist einen Puffer zu, der gemäß dem zugrunde liegenden Gerät für das angegebene Volume ausgerichtet ist. Solche geräteorientierten Puffer sind für nicht zwischengespeicherte E/A erforderlich. (Sie können auch für zwischengespeicherte E/A-Vorgänge verwendet werden.) Daher sollten Minifiltertreiber beim Aufrufen von Routinen, die nicht zwischengespeicherte E/A-Vorgänge ausführen, wie FltReadFile und FltWriteFile, FltAllocatePoolAlignedWithTag anstelle von ExAllocatePoolWithTag aufrufen.

Wenn der Aufrufer den Wert null für den NumberOfBytes-Parameter angibt, weist FltAllocatePoolAlignedWithTag die kleinste Menge an Arbeitsspeicher zu, die die Ausrichtungsanforderung erfüllt.

Das System ordnet das vom Tag-Parameter angegebene Pooltag dem zugeordneten Puffer zu. Programmiertools wie der Windows-Debugger (WinDbg) können das Pooltag anzeigen, das jedem zugeordneten Puffer zugeordnet ist. Der Wert des Pooltags wird normalerweise in umgekehrter Reihenfolge angezeigt. Wenn ein Aufrufer beispielsweise "Fred" als Wert des Tag-Parameters übergibt, wird dieser Wert als "derF" angezeigt, wenn der Pool dumped wird oder wenn die Poolnutzung im Debugger nachverfolgt wird.

Weitere Informationen zur Speicherverwaltung finden Sie unter Arbeitsspeicherverwaltung.

Wenn der Puffer, den FltAllocatePoolAlignedWithTag zuordnet, nicht mehr benötigt wird, ist der Aufrufer dafür verantwortlich, ihn durch Aufrufen von FltFreePoolAlignedWithTag freizugeben.

Aufrufer von FltAllocatePoolAlignedWithTag können nur im IRQL-DISPATCH_LEVEL ausgeführt werden, wenn ein NonPagedXxxPoolType angegeben ist. Andernfalls müssen Aufrufer unter IRQL <= APC_LEVEL ausgeführt werden.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek FltMgr.lib
IRQL <= APC_LEVEL (siehe Abschnitt Hinweise)

Weitere Informationen

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile