Macro FsRtlInitPerStreamContext (ntifs.h)

La macro FsRtlInitPerStreamContext initialise une structure de contexte de pilote de filtre.

Syntaxe

void FsRtlInitPerStreamContext(
   _fc,
   _owner,
   _inst,
   _cb
);

Paramètres

_fc

Pointeur vers une structure de FSRTL_PER_STREAM_CONTEXT allouée par l’appelant à utiliser 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 pilote. Les deux types de structure sont généralement alloués en appelant ExAllocatePoolWithTag.

_owner

Pointeur vers une variable allouée par l’appelant qui identifie de manière unique le propriétaire de la structure de contexte par flux. Le format de cette variable est le pilote de filtre - spécifique. 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 appelants doivent spécifier une valeur non NULL pour ce paramètre.

_inst

Pointeur vers un pilote de filtre : variable allouée 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 le pilote de filtre - spécifique. 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 paramètre est facultatif et peut être NULL.

_cb

Pointeur vers une routine de rappel qui libère la structure de contexte par flux. Les appelants doivent spécifier une valeur non NULL pour ce paramètre. Cette routine et ses paramètres sont définis comme suit :

typedef
VOID (*PFREE_FUNCTION) (
          IN PVOID Buffer
          );

Tampon

Pointeur vers la structure de contexte par flux à libérer. La routine FreeCallback cast généralement ce pointeur vers le type de pointeur de structure approprié et le libère en appelant ExFreePool.

Valeur de retour

None

Remarques

Un pilote de filtre de système de fichiers utilise la macro FsRtlInitPerStreamContext pour initialiser une structure de contexte par flux nouvellement allouée avant de l’associer à un flux de fichiers. La structure de contexte initialisée peut être passée en tant que paramètre à FsRtlInsertPerStreamContext.

FsRtlInitPerStreamContext stocke l’adresse de la routine FreeCallback dans le membre FreeCallback de la structure FSRTL_PER_STREAM_CONTEXT.

La routine FreeCallback est appelée dans IRQL <= APC_LEVEL. Généralement, il est appelé à l’IRQL PASSIVE_LEVEL.

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é.
 
Pour associer une structure de contexte par flux initialisée à un flux de fichiers, appelez FsRtlInsertPerStreamContext.

Une fois la structure de contexte associée à un flux de fichiers, elle peut être récupérée en appelant FsRtlLookupPerStreamContext ou supprimée en appelant FsRtlRemovePerStreamContext.

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 Windows XP ; Correctif cumulatif pour Windows 2000 Service Pack 4 (SP4)
Plateforme cible Desktop (Expérience utilisateur)
En-tête ntifs.h (inclure Ntifs.h)
IRQL N’importe quel niveau

Voir aussi

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts