次の方法で共有


FltSetVolumeContext 関数 (fltkernel.h)

FltSetVolumeContext は 、ボリュームのコンテキストを設定します。

構文

NTSTATUS FLTAPI FltSetVolumeContext(
  [in]            PFLT_VOLUME               Volume,
  [in]            FLT_SET_CONTEXT_OPERATION Operation,
  [in]            PFLT_CONTEXT              NewContext,
  [out, optional] PFLT_CONTEXT              *OldContext
);

パラメーター

[in] Volume

ボリュームの不透明なボリューム ポインター。

[in] Operation

実行する操作の詳細を指定するフラグ。 このパラメーターは、次のいずれかである必要があります。

フラグ 説明
FLT_SET_CONTEXT_REPLACE_IF_EXISTS コンテキストが Volume に既に設定されている場合は、FltSetVolumeContext によって>き換えられます。 それ以外の場合は、ボリュームのコンテキストの一覧に NewContext が挿入されます。
FLT_SET_CONTEXT_KEEP_IF_EXISTS このボリュームにコンテキストが既に設定されている場合、 FltSetVolumeContext はSTATUS_FLT_CONTEXT_ALREADY_DEFINEDを返し、既存のコンテキストを置き換えたり、参照カウントをインクリメントしたりしません。 コンテキストがまだ設定されていない場合、ルーチンは、ボリュームのコンテキストの一覧に NewContext を挿入し、参照カウントをインクリメントします。

[in] NewContext

ボリュームに設定する新しいコンテキストへのポインター。 このパラメーターは必須であり、 NULL にすることはできません。

[out, optional] OldContext

Volume の既存のボリューム コンテキストのアドレスを受け取る呼び出し元によって割り当てられた変数へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。 このパラメーターの詳細については、次の「解説」セクションを参照してください。

戻り値

FltSetVolumeContext は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

リターン コード 説明
STATUS_FLT_CONTEXT_ALREADY_DEFINED Operation にFLT_SET_CONTEXT_KEEP_IF_EXISTSが指定されている場合、このエラー コードは、コンテキストが既にボリュームにアタッチされていることを示します。
STATUS_FLT_CONTEXT_ALREADY_LINKED NewContext パラメーターが指すコンテキストは、オブジェクトに既にリンクされています。 言い換えると、このエラー コードは、FltSetXxxコンテキスト ルーチンの以前の呼び出しが成功したため、NewContext が既に使用されていることを示します。
STATUS_FLT_DELETING_OBJECT 指定した ボリューム が破棄されています。 これはエラー コードです。
STATUS_INVALID_PARAMETER 無効なパラメーターが渡されました。 たとえば、 NewContext パラメーターが有効なボリューム コンテキストを指していないか、 Operation に無効な値が指定されています。 これはエラー コードです。

注釈

コンテキストの詳細については、「 ミニフィルター コンテキストについて」を参照してください。

ミニフィルター ドライバーは 、FltSetVolumeContext を呼び出して、ボリュームにコンテキストをアタッチするか、既存のボリューム コンテキストを削除または置換します。 ミニフィルター ドライバーは、1 つのボリュームに 1 つのコンテキストのみをアタッチできます。

参照カウント

FltSetVolumeContext が成功した場合:

  • NewContext の参照カウントがインクリメントされます。 NewContext が不要になった場合、ミニフィルターは FltReleaseContext を呼び出して参照カウントをデクリメントする必要があります。

FltSetVolumeContext が失敗した場合は、次のようにします。

  • NewContext の参照カウントは変更されません。
  • OldContextNULL ではなく、NULL_CONTEXTを指していない場合、OldContext は現在ボリュームに関連付けられているコンテキストへの参照ポインターです。 FltSetVolumeContext を呼び出すフィルターは、コンテキスト ポインターが不要になった場合にも、OldContext に対して FltReleaseContext を呼び出す必要があります。

成功に関係なく:

  • FltSetVolumeContext を呼び出すフィルターは、FltReleaseContext を呼び出して、FltAllocateContext によってインクリメントされた NewContext オブジェクトの参照カウントをデクリメントする必要があります。

詳細については、「コンテキストの 参照」を参照してください。

その他のコンテキスト操作

詳細については、「コンテキストの設定」および「コンテキストの解放:

要件

要件
サポートされている最小のクライアント Microsoft Windows 2000 Update Rollup 1 で SP4、Windows XP SP2、Windows Server 2003 SP1、およびそれ以降のオペレーティング システムで使用およびサポートされています。
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
[DLL] Fltmgr.sys
IRQL <= APC_LEVEL

こちらもご覧ください

FltAllocateContext

FltDeleteContext

FltDeleteVolumeContext

FltGetVolumeContext

FltReleaseContext