カーネル モード ドライバーが開始した IRP_MJ_CREATE 操作に ECP をアタッチする
次の手順に従って、ECP を設定し、ファイルに対する IRP_MJ_CREATE 操作に ECP をアタッチする必要があります。
FltAllocateExtraCreateParameterList または FsRtlAllocateExtraCreateParameterList を呼び出して、ECP_LIST 構造体のメモリを割り当てます。 オペレーティング システムは、ECP_LIST 構造体を自動的に解放しません。 代わりに、ミニフィルター ドライバーが最終的に FltFreeExtraCreateParameterList または FsRtlFreeExtraCreateParameterList を呼び出して、ECP_LIST に割り当てられたメモリの割り当てを解除する必要があります。
FltAllocateExtraCreateParameter または FsRtlAllocateExtraCreateParameter を呼び出して、ECP コンテキスト構造体にページ メモリ プールを割り当て、その構造体へのポインターを生成します。
FltInsertExtraCreateParameter または FsRtlInsertExtraCreateParameter を呼び出して、ECP コンテキスト構造体を ECP_LIST 構造体に挿入します。
IoInitializeDriverCreateContext を呼び出して、IO_DRIVER_CREATE_CONTEXT 構造体を初期化します。
IO_DRIVER_CREATE_CONTEXT 構造体を定義します。 この定義では、IO_DRIVER_CREATE_CONTEXT の ExtraCreateParameter メンバーで ECP_LIST 構造体をポイントします。
FltCreateFileEx2 または IoCreateFileEx を呼び出して、ファイルに対する IRP_MJ_CREATE 操作に ECP をアタッチします。 この呼び出しでは、IO_DRIVER_CREATE_CONTEXT 構造体へのポインターを DriverContext パラメーターに渡します。
FltFreeExtraCreateParameterList または FsRtlFreeExtraCreateParameterList を呼び出して、ECP_LIST 構造体を解放します。 これらの関数により、残りの ECP リスト要素も自動的に解放されます。