Partilhar via


Conceitos do Filter Manager

O Gerenciador de Filtros (FltMgr.sys) é um driver de modo kernel fornecido pelo sistema que implementa e expõe a funcionalidade normalmente necessária nos drivers de filtro do sistema de arquivos. Os desenvolvedores de filtros de sistema de arquivos podem usar funcionalidade do FltMgrpara escrever drivers de de minifiltro que são mais simples de desenvolver do que os drivers de filtro de sistema de arquivos herdados. O resultado final é um processo de desenvolvimento encurtado e drivers mais robustos e de maior qualidade.

O FltMgr é instalado com o Windows, mas fica ativo somente quando um driver de minifiltro é carregado. Ele se conecta à pilha do sistema de arquivos para um volume de destino. Um driver de minifiltro é anexado à pilha do sistema de arquivos indiretamente, registrando-se com 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 fixação de um driver de minifiltro em uma determinada altitude em um volume específico é chamada de de instância do driver de minifiltro.

Altitude de um minifiltro:

  • Garante que a instância do driver de minifiltro é sempre carregada no local correto em relação a outras instâncias de driver de minifiltro.
  • Determina a ordem na qual FltMgr chama o driver de minifiltro para manipular E/S.

A figura a seguir mostra uma pilha de E/S simplificada com o gerenciador de filtros e três drivers de minifiltro.

Diagrama ilustrando uma pilha de E/S simplificada com o gerenciador de filtros e três drivers de minifiltro.

Um driver de minifiltro pode filtrar os seguintes tipos de operações:

  • Operações de E/S baseadas em IRP
  • Operações de E/S rápidas
  • Operações de chamada de retorno do 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 pós-operação ou ambas. Quando FltMgr lida com uma operação de E/S, ele chama a rotina de callback apropriada para cada driver de minifiltro registado para essa operação. Quando a rotina de retorno de chamada for concluída, FltMgr chama a rotina de retorno de chamada apropriada para o próximo driver de minifiltro que se inscreveu para a operação.

Por exemplo, suponha que todos os três drivers de minifiltro nesta figura se registaram para a mesma operação de E/S. Nesta situação:

  • Quando 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). FltMgr encaminha a solicitação de E/S para o próximo driver inferior para processamento posterior.
  • Quando 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, do mais baixo para o mais alto (C, B, A).

Para garantir a interoperabilidade com drivers de filtro legados, FltMgr pode anexar objetos de dispositivos de filtro a uma pilha de E/S do sistema de arquivos em múltiplos pontos. Cada um dos objetos de dispositivo de filtro do FltMgrdo FltMgr é chamado de quadro. Da perspetiva 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 uma gama de altitudes. O FltMgr pode ajustar um quadro existente ou criar um novo quadro para permitir que os drivers de minifiltro sejam anexados no local correto.

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 se destinar a ser anexado acima de um filtro herdado, ele pode 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

Verifique sempre a interoperabilidade de filtros herdados com minifiltros ou considere substituir filtros herdados por minifiltros. Para obter mais informações, consulte Diretrizes para migração de 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 duas estruturas do gestor de filtros, instâncias de minifiltro e um controlador de filtro legado.

Diagrama ilustrando 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.