Поделиться через


Сосуществование с другими драйверами фильтров файловой системы

Одной из самых коварных проблем, которые должны быть правильно обработаны драйвером фильтра файловой системы, является сосуществование с другими драйверами фильтров. При создании драйвера фильтра файловой системы для сосуществования с другими драйверами фильтров файловой системы рекомендуется учитывать следующие проблемы:

  • Драйверы фильтров должны учитывать наличие других драйверов фильтров в своих операциях. Любая операция, выполняемая драйвером фильтра, должна быть достаточно надежной, чтобы выжить в дополнительном драйвере фильтра с использованием того же или другого метода.

  • Драйверы фильтров могут влиять на поведение других фильтров, изменяя базовое поведение системы.

  • Увеличение числа драйверов фильтров приводит к увеличению потребления ограниченных ресурсов, в частности пространства стека. Драйверы фильтров файловой системы должны стремиться к минимизации использования таких ограниченных ресурсов. В противном случае вредоносные пользовательские приложения могут воспользоваться такими недостатками, чтобы вызвать сбой системы. Разработчики должны быть особенно осторожны с путями завершения и путями ошибок.

  • Драйверы фильтров должны быть консервативными в том, что они отправляют в нижний драйвер (драйвер фильтра или файловая система), и должны быть либеральными в том, что они принимают. По возможности драйвер фильтра должен попытаться убедиться, что операции, отправляемые в базовый драйвер, являются простыми и не сложными (например, не выполняйте операции переименования во время операций создания).

  • Драйверы фильтров должны быть осторожны при блокировке. Блокировки никогда не должны удерживаться в вызовах файловой системы. Различные компоненты системы делают очень точные и явные предположения о упорядочении блокировок и функциях, которые могут и не могут блокироваться. Нарушение этого путем добавления еще одного уровня блокировки может легко привести к взаимоблокировкам. Ввод-вывод, исходящий из Srv.sys, особенно быстро подвергает эти проблемы, но они могут быть замечены во время обычного стресс-тестирования, а также.

Крайне важно, чтобы любой разработчик драйвера фильтра файловой системы не только разрабатывал и реализовыв его так, чтобы он четко сосуществовали с другими драйверами фильтров, но и проверял драйвер фильтра с другими драйверами фильтров, чтобы убедиться, что драйвер не приводит к проблемам безопасности в системе.