Conceptos sobre el administrador de filtros
El Administrador de filtros (FltMgr.sys) es un controlador en modo kernel que ofrece por el sistema y que implementa y expone las funcionalidades que normalmente se necesitan en los controladores de filtro del sistema de archivos. Los desarrolladores de filtros del sistema de archivos pueden usar la funcionalidad de FltMgr para escribir controladores de minifiltro que son más sencillos de desarrollar que los controladores de filtro de sistemas de archivos heredados. El resultado final es un proceso de desarrollo acortado y controladores más sólidos y de mayor calidad.
FltMgr se instala con Windows, pero solo se activa cuando se carga un controlador de minifiltro. Se adjunta a la pila del sistema de archivos en un volumen de destino. Un controlador de minifiltro se asocia indirectamente a la pila del sistema de archivos, registrándose con FltMgr para las operaciones de E/S que el controlador de minifiltro decida filtrar.
Los minifiltros se incorporan en un orden determinado. El sistema operativo determina el orden de los datos incorporados por grupos de orden de carga y altitudes. La integración de un controlador de minifiltro en una altitud determinada con un volumen determinado se denomina instancia del controlador de minifiltro.
Altitud del minifiltro:
- Garantiza que la instancia del controlador de minifiltro siempre se cargue en la ubicación adecuada en relación con otras instancias del controlador de minifiltro.
- Determina el orden en el que FltMgr llama al controlador de minifiltro para controlar las operaciones de E/S.
En la imagen siguiente se ve una pila de E/S simplificada con el administrador de filtros y tres controladores de minifiltro.
Un controlador de minifiltro puede filtrar las operaciones de E/S basadas en IRP y las operaciones de devolución de llamada rápidas de E/S y de filtros del sistema de archivos (FSFilter). En cada una de las operaciones de E/S que decida filtrar, un minifiltro puede registrar una rutina de devolución de llamada antes de la operación, una rutina de devolución de llamada después de la operación o ambas. Cuando FltMgr controla una operación de E/S, llama a la rutina de devolución de llamada correspondiente para cada controlador de minifiltro que se haya registrado en esa operación. Cuando se devuelve esa rutina de devolución de llamada, FltMgr llama a la rutina de devolución de llamada correcta para el siguiente controlador de minifiltro que se registró en la operación.
Por ejemplo, supongamos que los tres controladores de minifiltro de esta imagen se registraron en la misma operación de E/S. En esta situación:
- Cuando FltMgr recibe la operación de E/S, llama a las rutinas de devolución de llamada antes de la operación de minifiltro en orden de altitud de mayor a menor (A, B, C). FltMgr reenvía la solicitud de E/S al controlador inferior siguiente para su posterior procesamiento.
- Cuando FltMgr recibe la solicitud de E/S para su finalización, llama a las rutinas de devolución de llamada después de la operación del controlador de minifiltro en orden inverso, de menor a mayor (C, B, A).
Para permitir la interoperabilidad con controladores de filtro heredados, FltMgr puede incluir objetos de dispositivo de filtro a una pila de E/S del sistema de archivos en más de una ubicación. Cada uno de los objetos de dispositivo de filtro de FltMgr se denomina marco. Desde la perspectiva de un controlador de filtro heredado, cada marco del administrador de filtros es otro controlador de filtro heredado.
Cada marco de administrador de filtros representa un rango de altitud. FlgMgr puede ajustar un marco existente o crear un nuevo marco para permitir que los controladores de minifiltro se incorporen en la ubicación correcta.
FltMgr no puede integrar un minifiltro entre dos filtros heredados incorporados a menos que ya haya un marco de administrador de filtros entre ellos. Si se tenía pensado incorporar un minifiltro encima de un filtro heredado, se puede incorporar debajo, dependiendo de si existe o no un segundo filtro heredado incorporado. Un minifiltro diseñado para incorporarse debajo de un filtro heredado podría, en su lugar, incorporarse encima de ese filtro heredado.
Importante
Compruebe siempre la interoperabilidad de los filtros heredados con minifiltros o piense en la posibilidad de reemplazar filtros heredados por minifiltros. Para obtener más información, consulte Guía para migrar controladores de filtro heredados.
Si un controlador de minifiltro se descarga y se vuelve a cargar, el sistema lo vuelve a cargar a la misma altitud y en el mismo marco a través del cual se descargó.
En la imagen siguiente se ve una pila de E/S simplificada con dos marcos de administrador de filtros, instancias de controlador de minifiltro y un controlador de filtro heredado.