共用方式為


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 值,例如下列其中一項。

傳回碼 Description
STATUS_SUCCESS 已成功註冊通知例程。
STATUS_INSUFFICIENT_RESOURCES 無法為通知例程配置通知封包。
STATUS_DEVICE_ALREADY_ATTACHED 請參閱<備註>。
STATUS_NOT_SUPPORTED 系統原則會封鎖舊版 FS 篩選驅動程式。 如需詳細資訊 ,請參閱封鎖舊版文件系統篩選驅動程式

備註

每當文件系統呼叫 IoRegisterFileSystem 或 IoUnregisterFileSystem 時,IoRegisterFsRegistrationChange 會註冊要通知的 FS 篩選驅動程式。

若要停止接收這類通知,篩選驅動程式應該呼叫 IoUnregisterFsRegistrationChange

當 FS 篩選驅動程式呼叫 IoRegisterFsRegistrationChange 時,OS 會立即針對所有目前已註冊的文件系統呼叫其通知例程。 (已註冊的文件系統已經成功呼叫 IoRegisterFileSystem ,但尚未呼叫 IoUnregisterFileSystem.) 因為呼叫端的通知例程即使在 IoRegisterFsRegistrationChange 傳回之前,仍應該在建立任何需要的數據結構來處理這些通知之前,篩選驅動程式才應該呼叫此例程。

IoRegisterFsRegistrationChange 會忽略 RAW 裝置。 如需依名稱附加至RAW檔案系統的資訊,請參閱 將篩選裝置物件附加至目標裝置物件

IoRegisterFsRegistrationChange 會遞增篩選驅動程式驅動程式對象的參考計數。

如果下列條件成立,IoRegisterFsRegistrationChange 會傳回STATUS_DEVICE_ALREADY_ATTACHED:

  • FS 篩選驅動程式連續呼叫 IoRegisterFsRegistrationChange 兩次,而不需在兩者之間呼叫 IoUnregisterFsRegistrationChange
  • 該 FS 篩選驅動程式已針對在先前呼叫 IoRegisterFsRegistrationChange 中註冊的 DriverObjectDriverNotificationRoutine 傳遞相同的值。
  • 自第一次呼叫之後,沒有其他篩選驅動程序註冊。

規格需求

需求
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另請參閱

IoRegisterFileSystem

IoRegisterFsRegistrationChangeEx

IoUnregisterFileSystem

IoUnregisterFsRegistrationChange