Coexistência com outros drivers de filtro do sistema de arquivos
Um dos problemas mais insidiosos que devem ser tratados corretamente por um driver de filtro do sistema de arquivos é a coexistência com outros drivers de filtro. Ao criar um driver de filtro do sistema de arquivos para coexistir com outros drivers de filtro do sistema de arquivos, é melhor considerar os seguintes problemas:
Os drivers de filtro devem considerar a presença de outros drivers de filtro em suas operações. Qualquer operação executada pelo driver de filtro deve ser robusta o suficiente para sobreviver a um driver de filtro adicional usando a mesma técnica ou técnica diferente.
Os drivers de filtro podem afetar o comportamento de outros filtros alterando o comportamento base do sistema.
Aumentar o número de drivers de filtro aumenta o consumo de recursos escassos, notadamente o espaço de pilha. Os drivers de filtro do sistema de arquivos devem se esforçar para minimizar o uso desses recursos escassos. Caso contrário, aplicativos de usuário mal-intencionados podem aproveitar esses pontos fracos para fazer com que o sistema falhe. Os desenvolvedores devem ter muito cuidado com caminhos de conclusão e caminhos de erro.
Os drivers de filtro devem ser conservadores no que enviam para o driver inferior (driver de filtro ou sistema de arquivos) e devem ser liberais no que aceitam. Sempre que possível, o driver de filtro deve tentar garantir que as operações enviadas ao driver subjacente sejam simples e não complicadas (não execute operações de renomeação durante operações de criação, por exemplo).
Os drivers de filtro devem ser cautelosos quanto ao bloqueio. Os bloqueios nunca devem ser mantidos entre chamadas do sistema de arquivos. Vários componentes do sistema fazem suposições muito precisas e explícitas sobre a ordenação de bloqueio e funções que podem e não podem ser bloqueadas. Perturbar isso adicionando outra camada de bloqueio pode facilmente levar a deadlocks. A E/S proveniente de Srv.sys expõe esses problemas particularmente rapidamente, mas eles também podem ser vistos durante testes normais de estresse.
É imperativo que qualquer desenvolvedor de driver de filtro do sistema de arquivos não apenas projete e implemente para coexistir corretamente com outros drivers de filtro, mas também teste o driver de filtro com outros drivers de filtro para garantir que o driver não introduza problemas de segurança no sistema.