次の方法で共有


カーネル モード ドライバーが開始した IRP_MJ_CREATE 操作に ECP をアタッチする

次の手順に従って、ECP を設定し、ファイルに対する IRP_MJ_CREATE 操作に ECP をアタッチする必要があります。

  1. FltAllocateExtraCreateParameterList または FsRtlAllocateExtraCreateParameterList を呼び出して、ECP_LIST 構造体のメモリを割り当てます。 オペレーティング システムは、ECP_LIST 構造体を自動的に解放しません。 代わりに、ミニフィルター ドライバーが最終的に FltFreeExtraCreateParameterList または FsRtlFreeExtraCreateParameterList を呼び出して、ECP_LIST に割り当てられたメモリの割り当てを解除する必要があります。

  2. FltAllocateExtraCreateParameter または FsRtlAllocateExtraCreateParameter を呼び出して、ECP コンテキスト構造体にページ メモリ プールを割り当て、その構造体へのポインターを生成します。

  3. FltInsertExtraCreateParameter または FsRtlInsertExtraCreateParameter を呼び出して、ECP コンテキスト構造体を ECP_LIST 構造体に挿入します。

  4. IoInitializeDriverCreateContext を呼び出して、IO_DRIVER_CREATE_CONTEXT 構造体を初期化します。

  5. IO_DRIVER_CREATE_CONTEXT 構造体を定義します。 この定義では、IO_DRIVER_CREATE_CONTEXTExtraCreateParameter メンバーで ECP_LIST 構造体をポイントします。

  6. FltCreateFileEx2 または IoCreateFileEx を呼び出して、ファイルに対する IRP_MJ_CREATE 操作に ECP をアタッチします。 この呼び出しでは、IO_DRIVER_CREATE_CONTEXT 構造体へのポインターを DriverContext パラメーターに渡します。

  7. FltFreeExtraCreateParameterList または FsRtlFreeExtraCreateParameterList を呼び出して、ECP_LIST 構造体を解放します。 これらの関数により、残りの ECP リスト要素も自動的に解放されます。