Обработка заполнителей

Руководство по минифильтрам, реализующим заполнители

Все реализации виртуализации, использующие заполнители , должны задавать атрибут файла FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS для этих заполнителей. Этот атрибут указывает, что:

  • Чтение таких файлов из-под минифильтра-владельцем может возвращать значения 0, и
  • Чтение таких файлов из выше владельцев минифильтра влечет за собой дополнительные расходы на предоставление данных.

Мини-фильтр может удалить этот атрибут из заполнителя, когда все данные будут доступны локально.

Все минифильтры, реализующие заполнители, должны находиться в группе порядка загрузки HSM.

Руководство по всем минифильтрам

Фильтры не должны выдавать целевые операции чтения и записи из экземпляров фильтров под группой порядка загрузки HSM для файлов, для которых задан атрибут FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS. Такая ситуация может привести к повреждению данных файла. Разработчик минифильтра может попытаться обойти эту ситуацию, отправив запрос ввода-вывода в верхнюю часть стека, но такой запрос может привести к взаимоблокировкам.

Фильтры также не должны выдавать операции чтения и записи в файлах-заполнителях, которые имеют атрибут FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS, заданный над группой порядка загрузки HSM. Такое чтение или запись вызывает ненужную гидратацию, если ни в каких приложениях пользователя не было запрошено данных файла.

Мини-фильтр не должен выдавать операции чтения и записи при перехвате открытий только атрибутов. Такие операции чтения и записи могут привести к взаимоблокировкам, так как некоторые реализации не ожидают, что открытия только для атрибутов преобразуются в операции доступа к данным. Кроме того, такие операции чтения и записи не позволяют проверять минифильтр на наличие FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS, чтобы избежать двух вышеупомянутых ситуаций.

Поэтому рекомендуется, чтобы все минифильтры не выпускали операции чтения и записи в файлах, для которых заданы FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS.