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

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

構文

PFLT_INSTANCE_SETUP_CALLBACK PfltInstanceSetupCallback;

NTSTATUS PfltInstanceSetupCallback(
  [in] PCFLT_RELATED_OBJECTS FltObjects,
  [in] FLT_INSTANCE_SETUP_FLAGS Flags,
  [in] DEVICE_TYPE VolumeDeviceType,
  [in] FLT_FILESYSTEM_TYPE VolumeFilesystemType
)
{...}

パラメーター

[in] FltObjects

現在 の操作 に関連するオブジェクトの不透明なポインターを含むFLT_RELATED_OBJECTS構造体へのポインター。

[in] Flags

インスタンスがアタッチされている理由を示すフラグのビットマスク。 次のいずれかになります。

フラグ 説明
FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT (0x00000001) インスタンスが自動的にアタッチされています。 ミニフィルター ドライバーが読み込まれたばかりで、既存のすべてのボリュームにアタッチされているか、新しくマウントされたボリュームにアタッチされています。
FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT (0x00000002) ユーザー モード アプリケーションが FilterAttach または FilterAttachAtAltitude を呼び出したか、カーネル モード コンポーネントが FltAttachVolume または FltAttachVolumeAtAltitude を呼び出したため、インスタンスが手動アタッチされています
FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME (0x00000004) インスタンスは、新しくマウントされたボリュームに自動的にアタッチされています。
FLTFL_INSTANCE_SETUP_DETACHED_VOLUME (0x00000008) インスタンスはデタッチされたボリュームにアタッチされています。 一部のファイル システム (一部のリムーバブル メディア ドライブで使用される FAT や CDFS など) では、デタッチ後にボリュームを再アタッチできます。 関連付けられたストレージ スタックがない場合、ボリュームはデタッチされます。 この状態のボリュームは、通常、まだ開いているファイルがあるマウント解除されたボリュームです。
FLTFL_INSTANCE_SETUP_DEV_VOLUME (0x00000010) インスタンスは、開発者ボリュームとして書式設定されたボリュームにアタッチされています。 ファイル システム フィルターを使用すると、管理者が特定のマシン上のボリュームを信頼する必要のない最適化を有効にすることができます。 Windows 11 バージョン 22H2 9 月の更新以降で使用できます。
FLTFL_INSTANCE_SETUP_TRUSTED_VOLUME (0x00000020) 特定のコンピューターの管理者がこのボリュームを信頼しており、ウイルス対策フィルターをボリュームにアタッチしないなどの最適化を有効にすることを望むことを示します。 この情報は、特定のコンピューター上のレジストリに保持されます。 これは、ファイル システム フィルターによって使用され、管理者が特定のコンピューター上のボリュームを信頼する必要がある最適化を有効にすることができます。 Windows 11 バージョン 22H2 9 月の更新以降で使用できます。

[in] VolumeDeviceType

ファイル システム ボリュームのデバイスの種類。 次のいずれかである必要があります。

  • FILE_DEVICE_CD_ROM_FILE_SYSTEM (0x00000002)
  • FILE_DEVICE_DISK_FILE_SYSTEM (0x00000008)
  • FILE_DEVICE_NETWORK_FILE_SYSTEM (0x00000014)

[in] VolumeFilesystemType

ボリュームのファイル システムの種類。 使用可能な値は 、FLT_FILESYSTEM_TYPEに一覧表示されます。

戻り値

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

リターン コード 説明
STATUS_FLT_DO_NOT_ATTACH この値を返した場合、ミニフィルター ドライバー インスタンスが特定のボリュームにアタッチされなくなります。 これはエラー コードです。

注釈

注意

PFLT_INSTANCE_SETUP_CALLBACK実装では、スレッド同期やプロセス間通信を実行しないでください。 このような操作を実行すると、デッドロック状態が発生する可能性があります。

ミニフィルター ドライバーは、DriverEntry ルーチンから FltRegisterFilter を呼び出して自身を登録すると、ミニフィルター ドライバーの InstanceSetupCallback ルーチンとしてPFLT_INSTANCE_SETUP_CALLBACK型のルーチンを登録できます。

InstanceSetupCallback ルーチンを登録するために、ミニフィルター ドライバーは、ミニフィルター ドライバーが FltRegisterFilterRegistration パラメーターとして渡FLT_REGISTRATION構造体の InstanceSetupCallback メンバーにPFLT_INSTANCE_SETUP_CALLBACK型のルーチンのアドレスを格納します。

フィルター マネージャーは、新しいボリュームがマウントされた後の最初の操作でこのルーチンを呼び出します。

フィルター マネージャーは、このルーチンを呼び出して、ミニフィルター ドライバーが自動または手動の添付ファイル要求に応答できるようにします。 このルーチンからエラーまたは警告 NTSTATUS コードが返された場合、ミニフィルター ドライバー インスタンスは指定されたボリュームにアタッチされません。 それ以外の場合、ミニフィルター ドライバー インスタンスは、指定されたボリュームにアタッチされます。

要件

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

こちらもご覧ください

FLT_REGISTRATION

FLT_RELATED_OBJECTS

FilterAttach

FilterAttachAtAltitude

FltAttachVolume

FltAttachVolumeAtAltitude

FltRegisterFilter

PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK

PFLT_INSTANCE_TEARDOWN_CALLBACK

Dev Drive