Partager via


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 gère 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 la tête de la liste à partir d’un objet de fichier, utilisez le FsRtlGetPerStreamContextPointer macro, puis convertissez le résultat en pointeur PFSRTL_ADVANCED_FCB_HEADER. Le pointeur de liste est le membre FilterContexts dans 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 de périphérique. Les pilotes de filtre doivent définir ce membre sur une valeur NULL non.

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 enregistreurs de filtres doivent choisir une valeur à la fois significative et pratique, telle que l’adresse de l’objet de contexte 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 être 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
     );

Tampon

Pointeur vers la structure FSRTL_PER_STREAM_CONTEXT à libérer.

Remarques

Les pilotes de filtre de système de fichiers peuvent utiliser une structure FSRTL_PER_STREAM_CONTEXT pour conserver des informations de contexte pour un flux de fichiers. Cette structure peut être utilisée comme étant ou incorporée dans une structure de contexte par flux définie par pilote.

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

Remarque La routine de 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 pour le 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 de retour

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é.

Exigences

Exigence Valeur
client minimum pris en charge Cette structure est Windows XP
d’en-tête ntifs.h (include Ntifs.h)

Voir aussi

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

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