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 |