Partager via


FltSetStreamContext, fonction (fltkernel.h)

La routine FltSetStreamContext définit un contexte pour un flux de fichiers.

Syntaxe

NTSTATUS FLTAPI FltSetStreamContext(
  [in]  PFLT_INSTANCE             Instance,
  [in]  PFILE_OBJECT              FileObject,
  [in]  FLT_SET_CONTEXT_OPERATION Operation,
  [in]  PFLT_CONTEXT              NewContext,
  [out] PFLT_CONTEXT              *OldContext
);

Paramètres

[in] Instance

Pointeur d’instance opaque pour l’instance de pilote minifilter dont le contexte doit être inséré dans, supprimé ou remplacé dans la liste des contextes attachés au flux de fichiers.

[in] FileObject

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

[in] Operation

Indicateur spécifiant les détails de l’opération à effectuer. Ce paramètre doit être l’un des éléments suivants :

Drapeau Signification
FLT_SET_CONTEXT_REPLACE_IF_EXISTS Si un contexte est déjà défini pour instance, FltSetStreamContext le remplace par le contexte spécifié dans NewContext . Sinon, il insère NewContext dans la liste des contextes du flux de fichiers.
FLT_SET_CONTEXT_KEEP_IF_EXISTS Si un contexte est déjà défini pour cette Instance, FltSetStreamContext retourne STATUS_FLT_CONTEXT_ALREADY_DEFINED et ne remplace pas le contexte existant ou incrémente le nombre de références. Si aucun contexte n’a déjà été défini, la routine insère NewContext dans la liste des contextes du flux de fichiers et incrémente le nombre de références.

[in] NewContext

Pointeur vers le nouveau contexte à définir pour le flux de fichiers. Ce paramètre est obligatoire et ne peut pas être NULL.

[out] OldContext

Pointeur vers une variable allouée par l’appelant qui reçoit l’adresse du contexte de flux existant pour le paramètre Instance, si un paramètre est déjà défini. Ce paramètre est facultatif et peut être NULL. Pour plus d’informations sur ce paramètre, consultez la section Remarques suivante.

Valeur de retour

La routine FltSetStreamContext retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, comme l’une des opérations suivantes :

Retourner le code Description
STATUS_FLT_CONTEXT_ALREADY_DEFINED Si FLT_SET_CONTEXT_KEEP_IF_EXISTS a été spécifié pour Opération, ce code d’erreur indique qu’un contexte de flux est déjà attaché au flux de fichiers.
STATUS_FLT_CONTEXT_ALREADY_LINKED Le contexte pointé par le paramètre NewContext est déjà lié à un objet. En d’autres termes, ce code d’erreur indique que NewContext est déjà utilisé en raison d’un appel antérieur d’une routine FltSetXxxContext.
STATUS_FLT_DELETING_OBJECT L’instance spécifiée dans le paramètre Instance est détruite. Il s’agit d’un code d’erreur.
STATUS_INVALID_PARAMETER Un paramètre non valide a été passé. Par exemple, le paramètre NewContext ne pointe pas vers un contexte de flux valide, ou une valeur non valide a été spécifiée pour le paramètre Operation. Il s’agit d’un code d’erreur.
STATUS_NOT_SUPPORTED Le système de fichiers ne prend pas en charge les contextes par flux pour ce flux de fichiers. Il s’agit d’un code d’erreur.

Remarques

Pour plus d’informations sur les contextes, consultez À propos des contextes minifilter.

Un pilote minifilter appelle FltSetStreamContext pour attacher un contexte de flux à un flux de fichiers, ou pour supprimer ou remplacer un contexte de flux existant. Un pilote minifilter peut attacher un contexte par instance de pilote minifilter au flux de fichiers.

FltSetStreamContext ne peut pas être appelé sur un FileObject non ouvert. Par conséquent, il ne peut pas être appelé à partir d’un rappel de précréation pour un flux, car le flux n’a pas été ouvert à ce stade. Toutefois, un pilote minifilter peut allouer et configurer le contexte de flux dans le rappel de précréation, le transmettre au rappel post-création à l’aide du paramètre de contexte d’achèvement et définir le contexte de flux sur le flux dans le rappel post-création.

Comptage de références

Si FltSetStreamContext réussit :

  • Le nombre de références sur NewContext est incrémenté. Lorsque NewContext n’est plus nécessaire, le minifilter doit appeler FltReleaseContext pour décrémenter son nombre de références.

Sinon, si FltSetStreamContext échoue :

  • Le nombre de références sur NewContext reste inchangé.
  • Si OldContext n’est pas NULL et ne pointe pas vers NULL_CONTEXT, OldContext est un pointeur référencé vers le contexte actuellement associé au flux. Le filtre appelant FltSetStreamContext doit appeler FltReleaseContext pour OldContext ainsi que lorsque le pointeur de contexte n’est plus nécessaire.

Quel que soit le succès :

  • Le filtre appelant FltSetStreamContext doit appeler FltReleaseContext pour décrémenter le nombre de références sur l’objet NewContext incrémenté par FltAllocateContext.

Pour plus d’informations, consultez Référencer des contextes.

Autres opérations de contexte

Pour plus d’informations, consultez Définition de contexteset publication de contextes:

Exigences

Exigence Valeur
client minimum pris en charge Disponible et pris en charge dans le correctif cumulatif 1 de Microsoft Windows 2000 pour SP4, Windows XP SP2, Windows Server 2003 SP1 et versions ultérieures.
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Voir aussi

FltAllocateContext

fltDeleteContext

FltDeleteStreamContext

FltGetStreamContext

FltReleaseContext