次の方法で共有


FltDeleteContext 関数 (fltkernel.h)

FltDeleteContext は、指定したコンテキストを削除対象としてマークします。

構文

VOID FLTAPI FltDeleteContext(
  [in] PFLT_CONTEXT Context
);

パラメーター

[in] Context

削除するコンテキストへのポインター。 このパラメーターは必須であり、 NULL にすることはできません。

戻り値

[なし] :

解説

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

コンテキストは参照カウントされるため、通常、ミニフィルター ドライバーが 、FltDeleteContext などのルーチンを呼び出してコンテキストを明示的に削除する必要はありません。

FltDeleteContext は 、削除対象のコンテキストをマークします。 コンテキストは、現在の参照が解放されるとすぐに解放されます (たとえば、コンテキストがまだ別のスレッドによって使用されているため)。

FltDeleteContext を使用する場合は、次の項目を考慮する必要があります。

  • ミニフィルター ドライバーが FltDeleteContext を呼び出す場合、ミニフィルター ドライバーはコンテキストへの参照を既に持っている必要があります。 ただし、ミニフィルター ドライバーが FltDeleteStreamHandleContextFltDeleteStreamContextFltDeleteInstanceContext などを呼び出す場合、ミニフィルター ドライバーはコンテキストへの参照を必要としません。 ミニフィルター ドライバーが FltDeleteContext を呼び出した後も、コンテキストへの参照は引き続き有効です。 ミニフィルター ドライバーは、コンテキストへの参照を解放するために FltReleaseContext ルーチンを呼び出す必要があります。

  • FltDeleteContext は、内部フィルター マネージャー構造からコンテキストを削除します。 その後、FltGetContexts や FltGetInstanceContext などのコンテキストを取得する関数をさらに呼び出しても、そのコンテキストを見つけることができません。 ただし、コンテキストの参照カウントが 0 になるまで、コンテキスト メモリは解放されません。

コンテキストは、次の表から適切な削除コンテキスト ルーチンを呼び出すことで削除することもできます。

コンテキストの種類 Delete-Context ルーチン
FLT_FILE_CONTEXT FltDeleteFileContext (Windows Vista 以降のみ)。
FLT_INSTANCE_CONTEXT FltDeleteInstanceContext
FLT_SECTION_CONTEXT FltCloseSectionForDataScan (Windows 8 以降のみ)。
FLT_STREAM_CONTEXT FltDeleteStreamContext
FLT_STREAMHANDLE_CONTEXT FltDeleteStreamHandleContext
FLT_TRANSACTION_CONTEXT FltDeleteTransactionContext (Windows Vista 以降のみ)。
FLT_VOLUME_CONTEXT FltDeleteVolumeContext

新しいコンテキストを割り当てるには、 FltAllocateContext を呼び出します。

コンテキストの参照カウントをインクリメントするには、 FltReferenceContext を呼び出します。

コンテキストの参照カウントをデクリメントするには、 FltReleaseContext を呼び出します。

セクション コンテキストFLT_SECTION_CONTEXT型は、 FltDeleteContext を使用して削除することはできません。 代わりに、 FltReleaseContext を使用してセクション コンテキストの割り当てを解除します。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
[DLL] Fltmgr.sys
IRQL <= APC_LEVEL

こちらもご覧ください

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext