FltAllocateExtraCreateParameterList 関数 (fltkernel.h)
fltAllocateExtraCreateParameterList ルーチン は、追加の create パラメーター (ECP) リスト構造体にページ プール メモリを割り当て、その構造体へのポインターを生成します。
構文
NTSTATUS FLTAPI FltAllocateExtraCreateParameterList(
[in] PFLT_FILTER Filter,
[in] FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
[out] PECP_LIST *EcpList
);
パラメーター
[in] Filter
ミニフィルター ドライバーの不透明なフィルター ポインター。 このポインターは、ミニフィルター ドライバーを一意に識別し、ミニフィルター ドライバーが読み込まれている限り一定のままになります。
[in] Flags
プールの割り当てオプションを定義します。 ビットごとの OR 操作を使用して、FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA フラグを Flags パラメーターと組み合わせると、ルーチンによって割り当てられたプールは、現在のプロセスのメモリ クォータに対して課金されます。
[out] EcpList
初期化された ECP リスト構造体へのポインターを受け取ります。 ルーチンが十分なプールの割り当てに失敗した場合、*EcpList は NULL になり、ルーチンは状態コードSTATUS_INSUFFICIENT_RESOURCESを返します。
戻り値
FltAllocateExtraCreateParameterList は、次のいずれかの値を返すことができます。
リターン コード | 形容 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FltAllocateExtraCreateParameterList 、ECP リスト構造に十分なメモリを割り当てることができませんでした。 この場合、*EcpList は NULL されます。 |
STATUS_SUCCESS | ECP リスト構造が正常に割り当てられ、初期化されました。 この場合、初期化されたリスト構造へのポインターが *EcpList パラメーターで返されます。 |
備考
FltAllocateExtraCreateParameterList 割り当てるメモリをオペレーティング システムが自動的に解放するかどうかは、次の状況に示すように、FltAllocateExtraCreateParameterList 呼び出されるタイミングによって異なります。
呼び出し元 FltAllocateExtraCreateParameterList を呼び出して、ECP_LISTを割り当て、呼び出し元が FltCreateFileEx2 ルーチンを呼び出す前に、1 つ以上の ECP コンテキスト構造体を追加できます。 この状況では、オペレーティング システムは ECP コンテキスト構造を解放しません。 したがって、呼び出し元は、同じ ECP セット FltCreateFileEx2 に対して複数の呼び出しを行うことができます。 呼び出し元がECP_LISTで完了したら、呼び出し元は、FltFreeExtraCreateParameterList ルーチンを呼び出して、ECP_LISTを解放する必要があります。
ファイル システム フィルター ドライバーが IRP_MJ_CREATE 要求を処理している間、ファイル システム フィルター ドライバーは FltInsertExtraCreateParameter を呼び出して、ECP を既存のECP_LISTにアタッチできます。 ECP_LISTが存在しない場合、呼び出し元は FltAllocateExtraCreateParameterList 呼び出してECP_LISTを作成する必要があります。 このような状況では、作成操作が完了すると、ECP_LISTと ECP コンテキスト構造が I/O マネージャーによって自動的にクリーンアップされます。 これにより、フィルター ドライバーの ECP を再解析ポイントの処理全体に適切に伝達できます。 このプロセスでは、複数のIRP_MJ_CREATE要求を生成する必要がある場合があります。
前述のように、FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA フラグを Flags パラメーターと共に使用すると、通常のページング可能なプールが割り当てられます。 それ以外の場合、ページング可能なプールは内部ルックアサイド リストを使用して割り当てられます。
ECP_LIST構造体
ECP_LISTは、オペレーティング システムによって宣言される不透明な構造体です。 ECP_LISTには、追加の create パラメーター (ECP) エントリの一覧が含まれています。
FltAllocateExtraCreateParameterList ルーチンを使用して、ECP_LIST 構造体のメモリを割り当てる必要があります。 FltAllocateExtraCreateParameterList によって割り当てられたメモリは、オペレーティング システムによって自動的に解放されません。FltFreeExtraCreateParameterList ルーチンを呼び出すことによって、明示的に割り当てを解除する必要があります。 FltFreeExtraCreateParameterList が呼び出されると、残りの ECP リスト要素 自動的に解放されることに注意してください。
PECP_LISTデータ型は、ECP_LIST型の変数へのポインターを宣言するために使用されます。
構文
struct ECP_LIST {
; // Reserved.
};
ECP_LIST構造体は Ntifs.h (Ntifs.h を含む) で宣言されています。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | このルーチンは、Windows Vista 以降で使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | fltkernel.h (Fltkernel.h を含む) |
ライブラリ | FltMgr.lib |
IRQL | <= APC_LEVEL |
関連項目
FltAllocateExtraCreateParameter の
FltAllocateExtraCreateParameterFromLookasideList の
FltCreateFileEx2 を する
FltFreeExtraCreateParameter を する
FltFreeExtraCreateParameterList を する
FltGetEcpListFromCallbackData の
FltInsertExtraCreateParameter の
FltRemoveExtraCreateParameter の
FltSetEcpListIntoCallbackData の
IoCreateFileEx の