Функция 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 регистрирует драйвер фильтра FS, чтобы получать уведомления при каждом вызове файловой системой IoRegisterFileSystem или IoUnregisterFileSystem.

Чтобы прекратить получение таких уведомлений, драйвер фильтра должен вызвать IoUnregisterFsRegistrationChange.

Когда драйвер фильтра FS вызывает IoRegisterFsRegistrationChange, ОС немедленно вызывает свою подпрограмму уведомлений для всех зарегистрированных в настоящее время файловых систем. (Зарегистрированная файловая система — это система, которая уже успешно называется IoRegisterFileSystem, но еще не называется IoUnregisterFileSystem.) Так как подпрограмму уведомлений вызывающего объекта можно вызвать еще до возврата IoRegisterFsRegistrationChange , драйвер фильтра не должен вызывать эту подпрограмму, пока не создаст структуры данных, необходимые для обработки этих уведомлений.

IoRegisterFsRegistrationChange игнорирует необработанные устройства. Сведения о присоединении к файловой системе RAW по имени см. в разделе Присоединение объекта устройства фильтра к целевому объекту устройства.

IoRegisterFsRegistrationChange увеличивает количество ссылок в объекте драйвера фильтра.

IoRegisterFsRegistrationChange возвращает STATUS_DEVICE_ALREADY_ATTACHED, если выполняются следующие условия:

  • Драйвер фильтра FS дважды последовательно вызывал IoRegisterFsRegistrationChange без вызова IoUnregisterFsRegistrationChange .
  • Драйвер фильтра FS передал те же значения для DriverObject и DriverNotificationRoutine , что и при предыдущем вызове IoRegisterFsRegistrationChange.
  • С момента первого вызова другие драйверы фильтров не зарегистрированы.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

См. также раздел

IoRegisterFileSystem

IoRegisterFsRegistrationChangeEx

IoUnregisterFileSystem

IoUnregisterFsRegistrationChange