次の方法で共有


PFLT_FILTER_UNLOAD_CALLBACK コールバック関数 (fltkernel.h)

ミニフィルター ドライバーは、ミニフィルター ドライバーの FilterUnloadCallback ルーチンとしてPFLT_FILTER_UNLOAD_CALLBACK型のルーチンを登録できます。

構文

PFLT_FILTER_UNLOAD_CALLBACK PfltFilterUnloadCallback;

NTSTATUS PfltFilterUnloadCallback(
  FLT_FILTER_UNLOAD_FLAGS Flags
)
{...}

パラメーター

Flags

アンロード要求を記述するフラグのビットマスク。 このパラメーターには NULL または次の値を指定できます。

フラグ 説明
FLTFL_FILTER_UNLOAD_MANDATORY フィルター マネージャーは、アンロード操作が必須であることを示すようにこのフラグを設定します。

戻り値

このコールバック ルーチンは、次のようなSTATUS_SUCCESSまたは NTSTATUS 値を返します。

リターン コード 説明
STATUS_FLT_DO_NOT_DETACH アンロード操作が必須でない場合、この状態値を返すと、ミニフィルター ドライバーがアンロードされなくなります。 これはエラー コードです。

注釈

ミニフィルター ドライバーが FltRegisterFilter を呼び出して自身を登録すると、 FilterUnloadCallback ルーチンを登録できます。 このコールバック ルーチンを登録するために、ミニフィルター ドライバーは、ミニフィルター ドライバーが FltRegisterFilter にパラメーターとして渡すFLT_REGISTRATION構造体の FilterUnloadCallback フィールドにPFLT_FILTER_UNLOAD_CALLBACK型のルーチンのアドレスを格納します。

FilterUnloadCallback ルーチンを登録するためにミニフィルター ドライバーは必要ありません。 ただし、アンロード ルーチンを登録することを強くお勧めします。 ミニフィルター ドライバーが FilterUnloadCallback ルーチンを登録しない場合は、アンロードできません。

ミニフィルター ドライバーが FilterUnloadCallback ルーチンを登録する場合:

  • フィルター マネージャーは FilterUnloadCallback ルーチンを呼び出して、フィルター マネージャーがミニフィルター ドライバーをアンロードしようとしていることをミニフィルター ドライバーに通知します。

  • アンロード操作が必須ではなく、 FilterUnloadCallback ルーチンがエラーまたは警告 NTSTATUS コード (STATUS_FLT_DO_NOT_DETACHなど) を返す場合、ミニフィルター ドライバーはアンロードされません。 それ以外の場合、ミニフィルター ドライバーはアンロードされます。

  • FLTFL_FILTER_UNLOAD_MANDATORY フラグが Flags パラメーターに設定されている場合、アンロード操作は必須であり、ミニフィルター ドライバーはそれ自体がアンロードされないようにすることはできません。

考えられるアンロードの原因とミニフィルター ドライバーのアンロード プロセスの詳細については、「 FilterUnloadCallback ルーチンが呼び出されたとき 」を参照してください。

要件

要件
対象プラットフォーム デスクトップ
Header fltkernel.h (Fltkernel.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

FLT_REGISTRATION

FltRegisterFilter