FltAllocateExtraCreateParameterFromLookasideList 関数 (fltkernel.h)
FltAllocateExtraCreateParameterFromLookasideList ルーチンは、追加の create パラメーター (ECP) コンテキスト構造用に特定のルックアサイド リストからメモリ プールを割り当て、その構造体へのポインターを生成します。
構文
NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
[in] PFLT_FILTER Filter,
[in] LPCGUID EcpType,
[in] ULONG SizeOfContext,
[in] FSRTL_ALLOCATE_ECP_FLAGS Flags,
[in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
[in, out] PVOID LookasideList,
[out] PVOID *EcpContext
);
パラメーター
[in] Filter
ミニフィルター ドライバーへの不透明なフィルター ポインター。 このポインターは、ミニフィルター ドライバーを一意に識別し、ミニフィルター ドライバーが読み込まれている限り一定のままになります。
[in] EcpType
ECP コンテキスト構造の型を示す GUID へのポインター。 詳細については、「 ドライバーでの GUID の使用 」を参照してください。
[in] SizeOfContext
ECP コンテキスト構造のサイズ (バイト単位)。
[in] Flags
プール割り当てオプションを定義します。 SizeOfContext パラメーターの値が、指定されたルックアサイド リストのサイズ (バイト単位) よりも大きい場合、ECP コンテキスト構造はルックアサイド リストではなくシステム プールから割り当てられます。 この場合、 Flags パラメーターに FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA ビット フラグ値が含まれている場合、ルーチンによって割り当てられたシステム プールは、現在のプロセスのメモリ クォータに対して課金されます。 詳細については、FltAllocateExtraCreateParameter の Flags パラメーターを参照してください。 ECP コンテキスト構造のメモリがルックアサイド リストから割り当てられる場合、より一般的なケースでは、FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA ビット フラグはルーチンで使用されません。
[in, optional] CleanupCallback
PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK 型のミニフィルター定義クリーンアップ コールバック ルーチンへのオプションのポインター。 クリーンアップ コールバック ルーチンは、ECP コンテキスト構造が削除されるときに呼び出されます。 クリーンアップ コールバック ルーチンが適用されない場合は、このパラメーターを NULL に 設定します。
[in, out] LookasideList
(ECP コンテキスト構造の場合) からプールを割り当てようとする初期化されたルックアサイド リストへのポインター。 ルックアサイド リストを初期化するには、 FltInitExtraCreateParameterLookasideList ルーチンを 使用します。
[out] EcpContext
割り当てられた ECP コンテキスト構造へのポインターを受け取ります。 ルーチンが ECP コンテキスト構造に十分なプールを割り当てなかった場合、 EcpContext は NULL になり、ルーチンは状態コード STATUS_INSUFFICIENT_RESOURCESを返します。
戻り値
FltAllocateExtraCreateParameterFromLookasideList ルーチンは、次のいずれかの値を返すことができます。
リターン コード | 説明 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FltAllocateExtraCreateParameterFromLookasideList ルーチンは、ECP コンテキスト構造に十分なメモリを割り当てることができませんでした。 この場合、 EcpContext は NULL になります。 |
STATUS_SUCCESS | ECP コンテキスト構造が正常に割り当てられています。 この場合、割り当てられた構造体へのポインターが EcpContext パラメーターによって返されます。 |
注釈
このルーチンは、Windows Vista 以降で使用できます。
FltAllocateExtraCreateParameterFromLookasideList ルーチンは、指定された初期化されたページまたはページ以外のルックアサイド リストから ECP コンテキスト構造のメモリ プールを割り当てます。 ただし、( SizeOfContext パラメーターで定義されている) ECP コンテキスト構造のサイズがルックアサイド リストよりも大きい場合、ルーチンは同様にページシステム プールまたは非ページ システム プールからメモリを割り当てます。
FltInitExtraCreateParameterLookasideList ルーチンを使用して、ページプールまたは非ページ プールのルックアサイド リストを初期化します。 検索側リストから ECP コンテキスト構造を割り当てるには FltAllocateExtraCreateParameterFromLookasideList ルーチンを使用し、ECP コンテキスト構造の割り当てを解除するには FltFreeExtraCreateParameter ルーチンを使用します。
ルックアサイド リストを解放するには、 FltDeleteExtraCreateParameterLookasideList ルーチンを使用します。
ドライバーは、アンロードする前に作成するすべての ECP コンテキスト構造とルックアサイド リストを解放する必要があります。 ただし、ファイル システムまたはファイル システム フィルター ドライバーが、IRP_MJ_CREATE要求の処理中に既存または新しく作成されたECP_LISTに ECP をアタッチすると、IRP が完了すると、この ECP が自動的にクリーンアップされます。 その結果、フィルター ドライバーは、動的に追加される ECP をクリーンする必要はありません。 これにより、フィルター ドライバーの ECP を再解析ポイント間で適切に伝達できます。つまり、複数のIRP_MJ_CREATE要求を生成する必要があるプロセスです。
ドライバーでルックアサイド リストを使用する方法の詳細については、「Lookaside Listsの使用」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
IRQL | <= APC_LEVEL |
こちらもご覧ください
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList