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


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

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

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

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

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

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

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

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