Compartilhar via


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 de terceiros podem usar a funcionalidade do FltMgr para escrever drivers de "minifiltro" que são mais simples de desenvolver do que drivers de filtro do sistema de arquivos herdados. O resultado final é um processo de desenvolvimento reduzido 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 é anexado à pilha do sistema de arquivos para um volume de destino. Um driver de minifiltro é anexado indiretamente à pilha do sistema de arquivos, registrando-se com o 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 do anexo por grupos de ordem de carga e altitudes. O anexo de um driver de minifiltro em uma altitude específica em um volume específico é chamado 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 o 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.

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 operações de E/S baseadas em IRP e operações de retorno de chamada de E/S e FSFilter (filtro de sistema de arquivos) rápidas. 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 postoperation 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 é retornada, 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 nessa 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 de 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 inferior seguinte para processamento adicional.
  • Quando o FltMgr recebe a solicitação de E/S para conclusão, ele chama as rotinas de retorno de chamada de postoperation de cada driver de minifiltro em ordem inversa, do mais baixo para o mais alto (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 mais um 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 drivers de minifiltro anexem 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 por minifiltros ou considere substituir filtros herdados por minifiltros. Para obter mais informações, consulte Diretrizes para portabilidade de drivers de filtro herdados.

Se um driver de minifiltro for descarregado e recarregado, ele será recarregado na mesma altitude no mesmo quadro do qual foi descarregado.

A figura a seguir mostra uma pilha de E/S simplificada com dois quadros de gerenciador de filtros, instâncias de driver de minifiltro e um driver de filtro herdado.

diagrama ilustrando uma pilha de e/s simplificada com dois quadros de gerenciador de filtros, instâncias de driver de minifiltro e um driver de filtro herdado.