structure FSRTL_PER_STREAM_CONTEXT (ntifs.h)

La structure FSRTL_PER_STREAM_CONTEXT contient des informations de contexte qu’un pilote de filtre de système de fichiers conserve sur un flux de fichiers.

Syntaxe

typedef struct _FSRTL_PER_STREAM_CONTEXT {
  LIST_ENTRY     Links;
  PVOID          OwnerId;
  PVOID          InstanceId;
  PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;

Membres

Links

Lien pour cette structure dans la liste de toutes les structures de contexte par flux associées au même flux de fichiers. FsRtlInsertPerStreamContext insère ce membre dans la liste de toutes les structures de contexte par flux pour un flux de fichiers. Pour obtenir un pointeur vers le début de la liste à partir d’un objet de fichier, utilisez la macro FsRtlGetPerStreamContextPointer et castez le résultat en pointeur PFSRTL_ADVANCED_FCB_HEADER . Le pointeur de liste est le membre FilterContexts de la structure d’en-tête du bloc de contrôle de fichier avancé (FCB) pour le flux de fichiers.

OwnerId

Pointeur vers une variable allouée par un pilote de filtre qui identifie de manière unique le propriétaire de la structure de contexte par flux. Le format de cette variable est spécifique au pilote de filtre. Les enregistreurs de filtres doivent choisir une valeur à la fois significative et pratique, telle que l’adresse d’un objet de pilote ou d’un objet d’appareil. Les pilotes de filtre doivent définir ce membre sur une valeur non NULL .

InstanceId

Pointeur vers une variable allouée par un pilote de filtre qui peut être utilisée pour distinguer les structures de contexte par flux créées par le même pilote de filtre. Le format de cette variable est spécifique au pilote de filtre. Les rédacteurs de filtres doivent choisir une valeur à la fois significative et pratique, telle que l’adresse de l’objet de contexte de flux de flux pour le flux de fichiers. (Pour obtenir cette adresse à partir d’un objet de fichier, utilisez la macro FsRtlGetPerStreamContextPointer .)

Ce membre est facultatif et peut avoir la valeur NULL.

FreeCallback

Pointeur vers une routine de rappel qui libère la structure de contexte par flux. Cette routine et ses paramètres sont définis comme suit :

VOID
(*PFREE_FUNCTION) (
     IN PVOID Buffer
     );

Buffer

Pointeur vers la structure FSRTL_PER_STREAM_CONTEXT vers free.

Remarques

Les pilotes de filtre de système de fichiers peuvent utiliser une structure FSRTL_PER_STREAM_CONTEXT pour gérer les informations de contexte d’un flux de fichiers. Cette structure peut être utilisée telle qu’elle est ou incorporée dans une structure de contexte par flux définie par le pilote.

Lorsqu’un système de fichiers supprime l’objet de contexte de flux pour un flux de fichiers, il doit appeler FsRtlTeardownPerStreamContexts, qui à son tour appelle les routines FreeCallback de toutes les structures de contexte par flux associées au flux de fichiers.

Note La routine FreeCallback ne peut pas appeler de manière récursive dans le système de fichiers ou acquérir des ressources de système de fichiers. En outre, cette routine doit supposer que l’objet de fichier du flux de fichiers a déjà été libéré.
 
La structure FSRTL_PER_STREAM_CONTEXT peut être allouée à partir d’un pool paginé ou non paginé.

La macro FsRtlSupportsPerStreamContexts détermine si un système de fichiers prend en charge les contextes par flux pour un flux de fichiers donné.

BOOLEAN FsRtlSupportsPerStreamContexts(
  [in] PFILE_OBJECT FileObject
);

Paramètres

FileObject [in]

PFILE_OBJECT

Pointeur vers un objet de fichier pour le flux de fichiers.

Valeur retournée

BOOLEAN

La macro FsRtlSupportsPerStreamContexts retourne TRUE si le système de fichiers prend en charge les contextes par flux pour le flux de fichiers, FALSE sinon.

Les pilotes de filtre de système de fichiers appellent FsRtlSupportsPerStreamContexts pour déterminer si le système de fichiers sous-jacent prend en charge les contextes par flux pour le flux de fichiers représenté par un objet de fichier donné. Notez qu’un système de fichiers peut prendre en charge des contextes par flux pour certains types de fichiers, mais pas pour d’autres. Par exemple, NTFS et FAT ne prennent pas actuellement en charge les contextes par flux pour la pagination des fichiers.

Pour plus d’informations, consultez Suivi Per-Stream contexte dans un pilote de filtre de système de fichiers hérité.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Cette structure est Windows XP
En-tête ntifs.h (inclure Ntifs.h)

Voir aussi

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

Suivi Per-Stream contexte dans un pilote de filtre de système de fichiers hérité