FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)
Диспетчер фильтров использует код элемента управления FSCTL_SET_PURGE_FAILURE_MODE для синхронизации операций во время существования раздела, созданного для проверки данных. Фильтры никогда не должны выдавать этот код элемента управления.
Основной код
Входной буфер
Структура SET_PURGE_FAILURE_MODE_INPUT.
Длина входного буфера
Размер в байтах SET_PURGE_FAILURE_MODE_INPUT.
Выходной буфер
Никакой
Длина выходного буфера
n/a
Буфер входных и выходных данных
Никакой
Длина буфера ввода и вывода
n/a
Блок состояния
Зарезервировано для использования системы.
Замечания
Диспетчер фильтров использует этот код элемента управления с IRP_MJ_FILE_SYSTEM_CONTROL вызовами к скобке жизни раздела. Эти вызовы служат для указания файловой системы (и, редко, минифильтров) вести себя следующим образом, если не удается очистить кэш диспетчера кэшей.
Для каждого FSCTL_SET_PURGE_FAILURE_MODE, выданного с SET_PURGE_FAILURE_MODE_ENABLED набором, FSCTL_SET_PURGE_FAILURE_MODE будет выдан с набором SET_PURGE_FAILURE_MODE_DISABLED. Хотя существует неугашенная SET_PURGE_FAILURE_MODE_ENABLED, диспетчер фильтров отвечает следующим образом на определенные состояния сбоя для определенных типов операций (см. ниже таблицу):
- Задается операция, эксплуативируя закрытие раздела (где это возможно).
- Повторно отправляет операцию в мини-фильтр или файловую систему, которая выдала сбой.
Чтобы активировать диспетчер фильтров для реагирования соответствующим образом, файловая система (или фильтр) реагирует на сбой очистки раздела следующим образом:
Операция | Требуемое состояние возврата |
---|---|
IRP_MJ_CREATE (разрушительные операции) | STATUS_USER_MAPPED_FILE |
IRP_MJ_WRITE (только неуправляемые операции) | STATUS_PURGE_FAILED |
IRP_MJ_SET_INFORMATION | STATUS_PURGE_FAILED |
Эти состояния должны быть возвращены только во время SET_PURGE_FAILURE_MODE_ENABLED невыполненных SET_PURGE_FAILURE_MODE_ENABLED (балансировка SET_PURGE_FAILURE_MODE_DISABLED не получена). Во всех остальных случаях состояния ошибок будут возвращены приложению.
Для любой другой операции (например, кэшируемой записи), если файловая система (или фильтр) не удается очистить раздел, пока существует FSCTL_SET_PURGE_FAILURE_MODE выдающийся, он несет ответственность за ожидание операции и повторной отправке ее, когда количество невыполненных FSCTL_SET_PURGE_FAILURE_MODE снижается до нуля. Если файловая система (или фильтр) просто возвращает состояние сбоя (включая перечисленные выше), это состояние будет возвращено приложению.
Состояние ошибки обрабатывается полностью в диспетчере фильтров, так как выполняется повторная обработка неудачной операции. Это означает, что ни в каких случаях фильтры не отображаются, что имеет следующие важные последствия:
- Такие средства мониторинга файловой системы, как монитор процессов не сообщают об этих операциях.
- Если для успешной повторной операции требуется использовать верхний фильтр, повторная операция завершится ошибкой. В этой ситуации требуется запись фильтров, чтобы убедиться, что второй фильтр возвращает состояние сбоя.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8 |
заголовка | ntifs.h |