次の方法で共有


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

インスタンスがアタッチされている理由を示すフラグのビットマスク。 次の 1 つ以上を指定できます。

意味
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 (0x00000003)
  • 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 ルーチンを登録するために、ミニフィルター ドライバーは、PFLT_INSTANCE_SETUP_CALLBACK 型のルーチンのアドレスを、ミニフィルター ドライバーが FltRegisterFilter Registration パラメーターとして渡す FLT_REGISTRATION 構造体の InstanceSetupCallback メンバー格納します。

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

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

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー 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