Conceitos do Gerenciador de Filtros
O Gerenciador de Filtros (FltMgr.sys) é um driver de modo kernel fornecido pelo sistema que implementa e expõe a funcionalidade normalmente necessária em drivers de filtro do sistema de arquivos. Os desenvolvedores de filtro do sistema de arquivos podem usar a funcionalidade do FltMgr para escrever drivers de minifiltro que são mais simples de desenvolver do que os drivers de filtro do sistema de arquivos herdados. O resultado final é um processo de desenvolvimento mais curto e drivers mais robustos e de maior qualidade.
FltMgr é instalado com o Windows, mas se torna ativo somente quando um driver de minifiltro é carregado. Ele é anexado à pilha do sistema de arquivos para um volume de destino. Um driver de minifiltro é anexado à pilha do sistema de arquivos indiretamente, registrando-se no FltMgr para as operações de E/S que o driver de minifiltro escolhe filtrar.
Os minifiltros são anexados em uma ordem específica. O sistema operacional determina a ordem de fixação por grupos de ordem de carga e altitudes. A anexação de um driver de minifiltro em uma determinada altitude em um volume específico é chamada de instância do driver de minifiltro.
Altitude de um minifiltro:
- Garante que a instância do driver de minifiltro seja sempre carregada no local apropriado em relação a outras instâncias de driver de minifiltro.
- Determina a ordem na qual FltMgr chama o driver de minifiltro para lidar com E/S.
A figura a seguir mostra uma pilha de E/S simplificada com o gerenciador de filtros e três drivers de minifiltro.
Um driver de minifiltro pode filtrar operações de E/S baseadas em IRP e operações rápidas de retorno de chamada de E/S e filtro do sistema de arquivos (FSFilter). Para cada uma das operações de E/S que ele escolhe filtrar, um minifiltro pode registrar uma rotina de retorno de chamada de pré-operação, uma rotina de retorno de chamada de pós-operação ou ambas. Quando o FltMgr manipula uma operação de E/S, ele chama a rotina de retorno de chamada apropriada para cada driver de minifiltro registrado para essa operação. Quando essa rotina de retorno de chamada retorna, o FltMgr chama a rotina de retorno de chamada apropriada para o próximo driver de minifiltro registrado para a operação.
Por exemplo, suponha que todos os três drivers de minifiltro nesta figura sejam registrados para a mesma operação de E/S. Nesta situação:
- Quando o FltMgr recebe a operação de E/S, ele chama as rotinas de retorno de chamada de pré-operação do minifiltro em ordem de altitude da mais alta para a mais baixa (A, B, C). Em seguida, o FltMgr encaminha a solicitação de E/S para o driver mais baixo para processamento adicional.
- Quando o FltMgr recebe a solicitação de E/S para conclusão, ele chama as rotinas de retorno de chamada pós-operação de cada driver de minifiltro na ordem inversa, da mais baixa para a mais alta (C, B, A).
Para interoperabilidade com drivers de filtro herdados, o FltMgr pode anexar objetos de dispositivo de filtro a uma pilha de E/S do sistema de arquivos em mais de um local. Cada um dos objetos de dispositivo de filtro do FltMgr é chamado de quadro. Da perspectiva de um driver de filtro herdado, cada quadro do gerenciador de filtros é apenas outro driver de filtro herdado.
Cada quadro do gerenciador de filtros representa um intervalo de altitudes. O FlgMgr pode ajustar um quadro existente ou criar um novo quadro para permitir que os drivers de minifiltro sejam anexados no local correto.
O FltMgr não pode anexar um minifiltro entre dois filtros herdados anexados, a menos que já haja um quadro do gerenciador de filtros entre eles. Se um minifiltro for destinado a ser anexado acima de um filtro herdado, ele poderá ser anexado abaixo dele, dependendo da existência de um segundo filtro herdado anexado. Um minifiltro destinado a ser anexado abaixo de um filtro herdado poderia, em vez disso, ser anexado acima desse filtro herdado.
Importante
Sempre verifique a interoperabilidade de filtros herdados com minifiltros ou considere substituir filtros herdados por minifiltros. Para obter mais informações, consulte Diretrizes para portar drivers de filtro herdados.
Se um driver de minifiltro for descarregado e recarregado, o sistema o recarregará na mesma altitude no mesmo quadro do qual foi descarregado.
A figura a seguir mostra uma pilha de E/S simplificada com dois quadros do gerenciador de filtros, instâncias de driver de minifiltro e um driver de filtro herdado.