Coexistencia con otros controladores de filtro del sistema de archivos
Uno de los problemas más insidiosos que un controlador de filtro del sistema de archivos debe controlar correctamente es la coexistencia con otros controladores de filtro. Al compilar un controlador de filtro del sistema de archivos para coexistir con otros controladores de filtro del sistema de archivos, es mejor tener en cuenta los siguientes problemas:
Los controladores de filtro deben tener en cuenta la presencia de otros controladores de filtro en sus operaciones. Cualquier operación realizada por el controlador de filtro debe ser lo suficientemente sólida como para sobrevivir a un controlador de filtro adicional mediante la misma técnica o diferente.
Los controladores de filtro pueden afectar al comportamiento de otros filtros cambiando el comportamiento base del sistema.
Aumentar el número de controladores de filtro aumenta el consumo de recursos escasos, en particular el espacio de pila. Los controladores de filtro del sistema de archivos deben esforzarse por minimizar su uso de estos recursos escasos. De lo contrario, las aplicaciones de usuario malintencionadas pueden aprovechar estos puntos débiles para provocar un error en el sistema. Los desarrolladores deben tener especial cuidado sobre las rutas de acceso de finalización y las rutas de acceso de error.
Los controladores de filtro deben ser conservadores en lo que envían al controlador inferior (controlador de filtro o sistema de archivos) y deben ser liberales en lo que aceptan. Siempre que sea posible, el controlador de filtro debe intentar asegurarse de que las operaciones que envían al controlador subyacente son sencillas y no complicadas (no realizan operaciones de cambio de nombre durante las operaciones de creación, por ejemplo).
Los controladores de filtro deben tener cuidado con el bloqueo. Los bloqueos nunca deben mantenerse en las llamadas del sistema de archivos. Varios componentes del sistema realizan suposiciones muy precisas y explícitas sobre el orden de bloqueo y las funciones que pueden bloquearse y no pueden bloquearse. Alterar esto agregando otra capa de bloqueo puede conducir fácilmente a interbloqueos. La E/S que se origina en Srv.sys expone estos problemas especialmente rápidamente, pero también se pueden ver durante las pruebas de esfuerzo normales.
Es imperativo que cualquier desarrollador de controladores de filtro del sistema de archivos no solo diseñe e implemente para coexistir limpiamente con otros controladores de filtro, sino también probar el controlador de filtro con otros controladores de filtro para asegurarse de que el controlador no introduce problemas de seguridad dentro del sistema.