FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)
Диспетчер фильтров использует код управления FSCTL_SET_PURGE_FAILURE_MODE для синхронизации операций в течение времени существования раздела, созданного для сканирования данных. Фильтры никогда не должны выдавать этот код элемента управления.
Основной код
Входной буфер
Структура SET_PURGE_FAILURE_MODE_INPUT .
Длина входного буфера
Размер SET_PURGE_FAILURE_MODE_INPUT в байтах.
Выходной буфер
None
Длина выходного буфера
Недоступно
Буфер входных и выходных данных
None
Длина входного/выходного буфера
Недоступно
Блок состояния
Зарезервировано для системного использования.
Комментарии
Диспетчер фильтров использует этот код элемента управления с 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_DISABLED не получена). Во всех остальных случаях в приложение будут возвращены состояния ошибок.
Для любой другой операции (например, кэшируемой записи) если файловой системе (или фильтру) не удается очистить раздел, пока имеется FSCTL_SET_PURGE_FAILURE_MODE невыполненным, она отвечает за ожидание операции и ее повторную отправку, когда число невыполненных FSCTL_SET_PURGE_FAILURE_MODE падает до нуля. Если файловая система (или фильтр) просто возвращает состояние сбоя (включая перечисленные выше), это состояние будет возвращено приложению.
Состояние ошибки обрабатывается полностью в диспетчере фильтров, как и при повторном выполнении неудачной операции. Это означает, что ни те, ни из них не видны фильтрам, что имеет следующие важные последствия:
- Средства мониторинга файловой системы, такие как монитор процессов , не сообщают об этих операциях.
- Если для успешной повторной операции требуется использовать верхний фильтр, операция повторного постановки в очередь завершится ошибкой. В этой ситуации требуются средства записи фильтров, чтобы убедиться, что этот второй фильтр возвращает состояние сбоя.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 |
Верхняя часть | ntifs.h |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по