Concepts relatifs au Filter Manager
Le Filter Manager (FltMgr.sys) est un pilote en mode noyau fourni par le système qui implémente et expose des fonctionnalités couramment requises dans les pilotes de filtre de système de fichiers. Les développeurs de filtres de système de fichiers peuvent utiliser les fonctionnalités de FltMgr pour écrire des pilotes minifilter plus simples à développer que les anciens pilotes de filtre de système de fichiers. Le résultat final est un processus de développement raccourci et des pilotes de meilleure qualité, plus robustes.
FltMgr est installé avec Windows, mais devient actif uniquement lorsqu’un pilote minifilter est chargé. Il s’attache à la pile de système de fichiers pour un volume cible. Un pilote minifilter s’attache à la pile de système de fichiers indirectement, en s’enregistrant auprès de FltMgr pour les opérations d’E/S que le pilote minifilter choisit de filtrer.
Les minifilters s’attachent dans un ordre particulier. Le système d’exploitation détermine l’ordre d’attachement par groupes d’ordre de chargement et altitudes. L’attachement d’un pilote de minifiltre à une altitude particulière sur un volume particulier est appelé une instance du pilote de minifiltre.
L’altitude d’un minifiltre :
- Assure que l’instance du pilote de minifiltre est toujours chargée à l’emplacement approprié par rapport aux autres instances de pilotes de minifiltre.
- Détermine l’ordre dans lequel FltMgr appelle le pilote de minifiltre pour gérer l’E/S.
Le schéma suivant montre une pile d’E/S simplifiée avec le Filter Manager et trois pilotes de minifiltre.
Un pilote de minifiltre peut filtrer les opérations d’E/S basées sur IRP ainsi que les opérations de rappel Fast I/O et FSFilter. Pour chacune des opérations d’E/S qu’il choisit de filtrer, un minifiltre peut enregistrer une routine de rappel pré-opération, une routine de rappel post-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 de minifiltre enregistré pour cette opération. Lorsque cette routine de rappel renvoie un résultat, FltMgr appelle la routine de rappel appropriée pour le prochain pilote de minifiltre enregistré pour l’opération.
Par exemple, supposons que les trois pilotes de minifiltre dans ce schéma se soient enregistrés 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 pré-opération des pilotes de minifiltre dans l’ordre des altitudes, du plus élevé au plus bas (A, B, C). FltMgr transfère ensuite la requête d’E/S au pilote inférieur pour traitement supplémentaire.
- Lorsque FltMgr reçoit la requête d’E/S pour finalisation, il appelle les routines de rappel post-opération de chaque pilote de minifiltre dans l’ordre inverse, du plus bas au plus élevé (C, B, A).
Pour assurer l’interopérabilité avec les anciens pilotes de filtre, FltMgr peut attacher des objets de filtre à une pile d’E/S de système de fichiers à plusieurs emplacements. Chacun des objets de filtre de FltMgr est appelé un frame. Du point de vue d’un ancien pilote de filtre, chaque frame du Filter Manager n’est qu’un autre ancien pilote de filtre.
Chaque frame du Filter Manager représente une plage d’altitudes. FlgMgr peut ajuster un frame existant ou en créer un nouveau pour permettre aux pilotes de minifiltre de s’attacher à l’emplacement correct.
FltMgr ne peut pas attacher un minifiltre entre deux filtres hérités attachés à moins qu’il n’y ait déjà un frame du Filter Manager entre eux. Si un minifiltre est censé être attaché au-dessus d’un filtre hérité, il peut être attaché en dessous de celui-ci, en fonction de l’existence d’un second filtre hérité attaché. Un minifiltre censé être attaché en dessous d’un filtre hérité pourrait, à la place, être attaché au-dessus de ce filtre hérité.
Important
Vérifiez toujours l’interopérabilité des filtres hérités avec les minifiltres ou envisagez de remplacer les filtres hérités par des minifiltres. Pour plus d’informations, veuillez consulter la section Recommandations pour le portage des pilotes de filtre hérités.
Si un pilote minifiltre est déchargé et rechargé, le système le recharge à la même altitude dans le même frame à partir duquel il a été déchargé.
Le schéma suivant montre une pile d’E/S simplifiée avec deux frames du Filter Manager, des instances de pilotes minifiltre, et un ancien pilote de filtre.