FltAllocatePoolAlignedWithTag 関数 (fltkernel.h)

FltAllocatePoolAlignedWithTag は、キャッシュされていない I/O 操作で使用するデバイスアラインバッファーを割り当てます。

構文

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

パラメーター

[in] Instance

ボリュームにアタッチされている呼び出し元所有のミニフィルター ドライバー インスタンスの不透明なインスタンス ポインター。 このパラメーターは必須であり、 NULL にすることはできません。

[in] PoolType

割り当てるプールの種類。 次のいずれか:

NonPagedPool

PagedPool

NonPagedPoolCacheAligned

PagedPoolCacheAligned

使用可能 プール メモリの種類の説明については、「POOL_TYPE」を参照してください。

[in] NumberOfBytes

割り当てるバイト数。 このパラメーターは必須であり、0 にすることができます。

[in] Tag

割り当てられたメモリのプール タグを指定します。 ドライバーは通常、プール タグを 1 ~ 4 個の 7 ビット ASCII 文字の文字列として指定します。単一引用符 ("abcd" など) で区切られます。 このパラメーターは必須であり、0 にすることはできません。

戻り値

要求を満たすのに十分な空きプールがない場合、 FltAllocatePoolAlignedWithTagNULL ポインターを返します。 それ以外の場合、 FltAllocatePoolAlignedWithTag は、新しく割り当てられたバッファーへのポインターを返します。

注釈

FltAllocatePoolAlignedWithTag は、指定されたボリュームの基になるデバイスに従ってアラインされたバッファーを割り当てます。 キャッシュされていない I/O には、このようなデバイスアラインバッファーが必要です。 (キャッシュされた I/O にも使用できます)。そのため、FltReadFile や FltWriteFile などのキャッシュされていない I/O を実行するルーチンを呼び出す場合、ミニフィルター ドライバーは ExAllocatePoolWithTag ではなく FltAllocatePoolAlignedWithTag を呼び出す必要があります。

呼び出し元が NumberOfBytes パラメーターに 0 の値を指定した場合、 FltAllocatePoolAlignedWithTag は 、アラインメント要件を満たす最小量のメモリを割り当てます。

システムは、 Tag パラメーターで指定されたプール タグを割り当てられたバッファーに関連付けます。 Windows デバッガー (WinDbg) などのプログラミング ツールでは、割り当てられた各バッファーに関連付けられているプール タグを表示できます。 通常、プール タグの値は逆の順序で表示されます。 たとえば、呼び出し元が Tag パラメーターの値として 'Fred' を渡した場合、プールがダンプされた場合、またはデバッガーでプールの使用状況を追跡するときに、この値は 'derF' として表示されます。

メモリ管理の詳細については、「メモリ 管理」を参照してください。

FltAllocatePoolAlignedWithTag が割り当てるバッファーが不要になった場合、呼び出し元は FltFreePoolAlignedWithTag を呼び出して解放する必要があります。

FltAllocatePoolAlignedWithTag の呼び出し元は、NonPagedXxxPoolType が指定されている場合にのみ、IRQL DISPATCH_LEVELで実行できます。 それ以外の場合、呼び出し元は IRQL <= APC_LEVELで実行されている必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
IRQL <= APC_LEVEL (「解説」セクションを参照)

こちらもご覧ください

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile