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 中註冊的 DriverObject 和 DriverNotificationRoutine 傳遞相同的值。
- 自第一次呼叫之後,沒有其他篩選驅動程序註冊。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |