Partager via


Prise en charge des contextes de minifiltre

Le gestionnaire de filtres fournit une prise en charge qui permet aux pilotes de minifiltre d’associer des contextes à des objets afin de préserver l’état des opérations d’E/S. Les objets qui peuvent avoir des contextes incluent des fichiers, des volumes, des instances, des flux, des handles de flux et des transactions. Pour plus d’informations sur l’implémentation des minifiltres, consultez À propos des contextes de minifiltre .

Les systèmes de fichiers tiers doivent utiliser la structure FSRTL_ADVANCED_FCB_HEADER (au lieu de la structure FSRTL_COMMON_FCB_HEADER ) pour fonctionner correctement avec les contextes de gestion de flux et de flux.

Les contextes peuvent être alloués à partir d’un pool paginé ou non paginé, à l’exception des contextes de volume, qui doivent être alloués à partir d’un pool non paginé.

Les contextes sont libérés automatiquement lorsque toutes les références en suspens ont été publiées. Si le pilote de minifiltre définit une routine de rappel de nettoyage de contexte, le gestionnaire de filtres appelle la routine avant que le contexte ne soit libéré.

Le gestionnaire de filtres prend en charge la suppression des contextes lorsque l’objet associé est supprimé, lorsqu’un instance est détaché et lorsque le pilote de minifiltre est déchargé.

Les contextes ne sont pas pris en charge pour la pagination des fichiers ou pendant les opérations suivantes :

  • Traitement de préopération pour les demandes de création

  • Traitement post-opération pour les demandes de fermeture

  • Traitement des demandes de IRP_MJ_NETWORK_QUERY_OPEN

Consultez l’exemple CTX pour obtenir un exemple de pilote de minifiltre qui utilise des contextes.

Routines de prise en charge du Gestionnaire de filtres pour la gestion du contexte

Le gestionnaire de filtres fournit de nombreuses routines de prise en charge de contexte pour les minifiltres :