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 ルーチンを登録するために、ミニフィルター ドライバーは、ミニフィルター ドライバーが FltRegisterFilter の Registration パラメーターとして渡すFLT_REGISTRATION構造体の InstanceSetupCallback メンバーにPFLT_INSTANCE_SETUP_CALLBACK型のルーチンのアドレスを格納します。
フィルター マネージャーは、新しいボリュームがマウントされた後の最初の操作でこのルーチンを呼び出します。
フィルター マネージャーはこのルーチンを呼び出して、ミニフィルター ドライバーが自動または手動の添付ファイル要求に応答できるようにします。 このルーチンからエラーまたは警告 NTSTATUS コードが返された場合、ミニフィルター ドライバー インスタンスは指定されたボリュームにアタッチされません。 それ以外の場合、ミニフィルター ドライバー インスタンスは、指定されたボリュームにアタッチされます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | fltkernel.h (Fltkernel.h を含む) |
IRQL | PASSIVE_LEVEL |
こちらもご覧ください
PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK