Concepts du Gestionnaire de filtres

Le gestionnaire de filtres (FltMgr.sys) est un pilote en mode noyau fourni par le système qui implémente et expose les fonctionnalités couramment requises dans les pilotes de filtre de système de fichiers. Les développeurs de filtres de système de fichiers tiers peuvent utiliser les fonctionnalités de FltMgr pour écrire des pilotes de « minifiltre » qui sont plus simples à développer que les pilotes de filtre de système de fichiers hérités. Le résultat final est un processus de développement raccourci et des pilotes plus robustes et de meilleure qualité.

FltMgr est installé avec Windows, mais devient actif uniquement lorsqu’un pilote minifilter est chargé. Il s’attache à la pile du système de fichiers pour un volume cible. Un pilote de minifiltre s’attache indirectement à la pile du système de fichiers, en s’inscrivant auprès de FltMgr pour les opérations d’E/S que le pilote minifilter choisit de filtrer.

Les minifiltres s’attachent dans un ordre particulier. Le système d’exploitation détermine l’ordre d’attachement par groupes d’ordre de charge et altitudes. La fixation d’un pilote minifilter à une altitude particulière sur un volume particulier est appelée instance du pilote minifilter.

Altitude d’un minifiltre :

  • Garantit que la instance du pilote minifilter est toujours chargée à l’emplacement approprié par rapport aux autres instances de pilote minifilter.
  • Détermine l’ordre dans lequel FltMgr appelle le pilote minifilter pour gérer les E/S.

La figure suivante montre une pile d’E/S simplifiée avec le gestionnaire de filtres et trois pilotes de minifiltre.

Diagramme illustrant une pile d’E/S simplifiée avec le gestionnaire de filtres et trois pilotes de minifiltre.

Un pilote de minifiltre peut filtrer les opérations d’E/S basées sur IRP et les opérations de rappel rapides d’E/S et de filtre de système de fichiers (FSFilter). Pour chacune des opérations d’E/S qu’il choisit de filtrer, un minifiltre peut inscrire une routine de rappel de préopération, une routine de rappel après opération, ou les deux. Lorsque FltMgr gère une opération d’E/S, il appelle la routine de rappel appropriée pour chaque pilote minifilter inscrit pour cette opération. Lorsque cette routine de rappel est retournée, FltMgr appelle la routine de rappel appropriée pour le pilote minifilter suivant inscrit pour l’opération.

Par exemple, supposons que les trois pilotes minifilter de cette figure sont inscrits pour la même opération d’E/S. Dans cette situation :

  • Lorsque FltMgr reçoit l’opération d’E/S, il appelle les routines de rappel de préopération du minifilter dans l’ordre d’altitude du plus élevé au plus bas (A, B, C). FltMgr transfère ensuite la demande d’E/S au pilote inférieur suivant pour un traitement ultérieur.
  • Lorsque FltMgr reçoit la demande d’E/S pour l’achèvement, il appelle les routines de rappel de post-opération de chaque pilote minifilter dans l’ordre inverse, du plus bas au plus élevé (C, B, A).

Pour l’interopérabilité avec les pilotes de filtre hérités, FltMgr peut attacher des objets de périphérique de filtre à une pile d’E/S de système de fichiers dans plusieurs emplacements. Chacun des objets d’appareil de filtre de FltMgr est appelé frame. Du point de vue d’un pilote de filtre hérité, chaque frame de gestionnaire de filtres n’est qu’un autre pilote de filtre hérité.

Chaque frame de gestionnaire de filtres représente une plage d’altitudes. FlgMgr peut ajuster une trame existante ou en créer une nouvelle pour permettre aux pilotes de minifiltre de s’attacher à l’emplacement approprié.

FltMgr ne peut pas attacher un minifiltre entre deux filtres hérités attachés, sauf s’il existe déjà une trame de gestionnaire de filtres entre eux. Si un minifiltre est destiné à être attaché au-dessus d’un filtre hérité, il peut être attaché en dessous, en fonction de l’existence d’un deuxième filtre hérité attaché. Un minifiltre destiné à être attaché sous un filtre hérité peut plutôt être attaché au-dessus de ce filtre hérité.

Important

Vérifiez toujours l’interopérabilité des filtres hérités avec des minifiltres ou envisagez de remplacer les filtres hérités par des minifiltres. Pour plus d’informations, consultez Recommandations pour le portage des pilotes de filtre hérités.

Si un pilote minifilter est déchargé et rechargé, il est rechargé à la même altitude dans le même cadre à partir duquel il a été déchargé.

La figure suivante montre une pile d’E/S simplifiée avec deux trames de gestionnaire de filtres, des instances de pilote minifiltre et un pilote de filtre hérité.

diagramme illustrant une pile d’E/S simplifiée avec deux trames de gestionnaire de filtres, des instances de pilote minifiltre et un pilote de filtre hérité.