FsRtlAllocateExtraCreateParameterList 関数 (ntifs.h)

FsRtlAllocateExtraCreateParameterList ルーチンは、ECP_LIST構造体にページ プール メモリを割り当て、その構造体へのポインターを生成します。

構文

NTSTATUS FsRtlAllocateExtraCreateParameterList(
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

パラメーター

[in] Flags

プール割り当てオプションを定義します。 ビットごとの OR 操作を使用してFSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA フラグを Flags パラメーターと組み合わせると、 FsRtlAllocateExtraCreateParameterList によって割り当てられたプールは、現在のプロセスのメモリ クォータに対して課金されます。

[out] EcpList

初期化された ECP リスト構造体へのポインターを受け取ります。 FsRtlAllocateExtraCreateParameterList が十分なプールの割り当てに失敗した場合、*EcpList は NULL になり、FsRtlAllocateExtraCreateParameterList は状態コードSTATUS_INSUFFICIENT_RESOURCESを返します。

戻り値

FsRtlAllocateExtraCreateParameterList は、次のいずれかの値を返すことができます。

リターン コード 説明
STATUS_INSUFFICIENT_RESOURCES FsRtlAllocateExtraCreateParameterList が ECP リスト構造に十分なメモリを割り当てることができませんでした。 この場合、*EcpList は NULL になります。
STATUS_SUCCESS ECP_LIST構造体のメモリが正常に割り当てられ、初期化されました。 この場合、初期化されたリスト構造へのポインターが EcpList パラメーターで返されます。

注釈

オペレーティング システムが FsRtlAllocateExtraCreateParameterList が割り当てるメモリを自動的に解放するかどうかは、次の状況に示すように、 FsRtlAllocateExtraCreateParameterList が呼び出されるタイミングによって異なります。

  • 呼び出し元は FsRtlAllocateExtraCreateParameterList を呼び出して、ECP_LISTを割り当て、呼び出し元が IoCreateFileEx ルーチンを呼び出す前に 1 つ以上の ECP コンテキスト構造を追加できます。 この状況では、オペレーティング システムは ECP コンテキスト構造を解放しません。 そのため、呼び出し元は、同じ ECP セットを使用して IoCreateFileEx を複数呼び出すことができます。 呼び出し元がECP_LISTで完了したら、呼び出し元は FltFreeExtraCreateParameter ルーチンを呼び出して、ECP_LISTを解放する必要があります。

  • ファイル システムまたはファイル システム フィルター ドライバーが IRP_MJ_CREATE 要求を処理している間、ファイル システムまたはファイル システム フィルター ドライバーは FltInsertExtraCreateParameter を呼び出して、ECP を既存のECP_LISTにアタッチできます。 ECP_LISTが存在しない場合、呼び出し元は FsRtlAllocateExtraCreateParameterList を呼び出してECP_LISTを作成する必要があります。 このような状況では、作成操作が完了すると、ECP_LISTと ECP コンテキスト構造が I/O マネージャーによって自動的にクリーンアップされます。 これにより、ファイル システムまたはフィルター ドライバーの ECP を再解析ポイントの処理全体に適切に伝達できます。 このプロセスでは、複数のIRP_MJ_CREATE要求を生成する必要がある場合があります。

FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA フラグを Flags パラメーターと共に使用すると、ページング可能なプールが割り当てられます。 それ以外の場合は、内部ルックアサイド リストを使用してページング可能なプールが割り当てられます。

要件

要件
サポートされている最小のクライアント Windows Vista
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx