IoRegisterFsRegistrationChange 関数 (ntifs.h)
IoRegisterFsRegistrationChange ルーチンは、ファイル システムが自身をアクティブ なファイル システムとして登録または登録解除するたびに呼び出されるファイル システム フィルター ドライバーの通知ルーチンを登録します。
構文
NTSTATUS IoRegisterFsRegistrationChange(
[in] PDRIVER_OBJECT DriverObject,
[in] PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
);
パラメーター
[in] DriverObject
FS フィルター ドライバーのドライバー オブジェクトへのポインター。
[in] DriverNotificationRoutine
ファイル システムが自身を登録または登録解除するときに呼び出す、 PDRIVER_FS_NOTIFICATION ルーチンへのポインター。
戻り値
IoRegisterFsRegistrationChange は、次のいずれかの NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | 通知ルーチンが正常に登録されました。 |
STATUS_INSUFFICIENT_RESOURCES | 通知パケットを通知ルーチンに割り当てられませんでした。 |
STATUS_DEVICE_ALREADY_ATTACHED | 「解説」を参照してください。 |
STATUS_NOT_SUPPORTED | レガシ FS フィルター ドライバーは、システム ポリシーによってブロックされます。 詳細については、「 レガシ ファイル システム フィルター ドライバーのブロック 」を参照してください。 |
注釈
IoRegisterFsRegistrationChange は、ファイル システムが IoRegisterFileSystem または IoUnregisterFileSystem を呼び出すたびに通知を受け取る FS フィルター ドライバー を登録します。
このような通知の受信を停止するには、フィルター ドライバーで IoUnregisterFsRegistrationChange を呼び出す必要があります。
FS フィルター ドライバーが IoRegisterFsRegistrationChange を呼び出すと、OS は現在登録されているすべてのファイル システムに対して通知ルーチンを直ちに呼び出します。 (登録済みファイル システムは、 既に IoRegisterFileSystem を正常に呼び出したが、 IoUnregisterFileSystem を呼び出していないシステムです)。呼び出し元の通知ルーチンは IoRegisterFsRegistrationChange が返される前でも呼び出すことができるため、フィルター ドライバーは、これらの通知を処理するために必要なデータ構造を作成するまで、このルーチンを呼び出さないでください。
IoRegisterFsRegistrationChange は RAW デバイスを無視します。 名前による RAW ファイル システムへのアタッチの詳細については、「 フィルター デバイス オブジェクトをターゲット デバイス オブジェクトにアタッチする」を参照してください。
IoRegisterFsRegistrationChange は、フィルター ドライバーのドライバー オブジェクトの参照カウントをインクリメントします。
IoRegisterFsRegistrationChange は、次の条件に該当する場合、STATUS_DEVICE_ALREADY_ATTACHEDを返します。
- FS フィルター ドライバーは、 IoRegisterFsRegistrationChange を呼び出さずに IoRegisterFsRegistrationChangeを 2 回連続して呼び出しました。
- その FS フィルター ドライバーは、以前の IoRegisterFsRegistrationChange の呼び出しで登録した DriverObject と DriverNotificationRoutine に対して同じ値を渡しました。
- 最初の呼び出し以降、他のフィルター ドライバーは登録されていません。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |