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