FltDeleteContext 関数 (fltkernel.h)
FltDeleteContext は、指定したコンテキストを削除対象としてマークします。
構文
VOID FLTAPI FltDeleteContext(
[in] PFLT_CONTEXT Context
);
パラメーター
[in] Context
削除するコンテキストへのポインター。 このパラメーターは必須であり、 NULL にすることはできません。
戻り値
[なし] :
解説
コンテキストの詳細については、「 ミニフィルター コンテキストについて」を参照してください。
コンテキストは参照カウントされるため、通常、ミニフィルター ドライバーが 、FltDeleteContext などのルーチンを呼び出してコンテキストを明示的に削除する必要はありません。
FltDeleteContext は 、削除対象のコンテキストをマークします。 コンテキストは、現在の参照が解放されるとすぐに解放されます (たとえば、コンテキストがまだ別のスレッドによって使用されているため)。
FltDeleteContext を使用する場合は、次の項目を考慮する必要があります。
ミニフィルター ドライバーが FltDeleteContext を呼び出す場合、ミニフィルター ドライバーはコンテキストへの参照を既に持っている必要があります。 ただし、ミニフィルター ドライバーが FltDeleteStreamHandleContext、 FltDeleteStreamContext、 FltDeleteInstanceContext などを呼び出す場合、ミニフィルター ドライバーはコンテキストへの参照を必要としません。 ミニフィルター ドライバーが 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 |