Partager via


FltSetTransactionContext, fonction (fltkernel.h)

La routine FltSetTransactionContext définit un contexte sur une transaction.

Syntaxe

NTSTATUS FLTAPI FltSetTransactionContext(
  [in]            PFLT_INSTANCE             Instance,
  [in]            PKTRANSACTION             Transaction,
  [in]            FLT_SET_CONTEXT_OPERATION Operation,
  [in]            PFLT_CONTEXT              NewContext,
  [out, optional] PFLT_CONTEXT              *OldContext
);

Paramètres

[in] Instance

Pointeur d’instance opaque pour l’appelant.

[in] Transaction

Pointeur de transaction opaque pour la transaction sur laquelle le contexte est défini.

[in] Operation

Indicateur qui spécifie 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 la transaction pointée par le paramètre transaction , FltSetTransactionContext la remplace par le contexte pointé par le paramètre NewContext. Sinon, il définit le contexte pointé par le paramètre NewContext comme contexte de la transaction pointée par le paramètre transaction de transaction.
FLT_SET_CONTEXT_KEEP_IF_EXISTS Si un contexte est déjà défini pour la transaction pointée par le paramètre Transaction, FltSetTransactionContext retourne STATUS_FLT_CONTEXT_ALREADY_DEFINED et ne remplace pas le contexte existant ou incrémente le nombre de références. Si un contexte n’a pas déjà été défini, cette routine définit le contexte vers lequel pointe le paramètre NewContext comme contexte de transaction pointée par le paramètre transaction, et incrémente le nombre de références.

[in] NewContext

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

[out, optional] OldContext

Pointeur vers une variable allouée par l’appelant qui reçoit l’adresse du contexte de transaction existant, si elle est déjà définie. 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

FltSetTransactionContext retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, par exemple l’une des valeurs suivantes :

Retourner le code Description
STATUS_FLT_CONTEXT_ALREADY_DEFINED Si FLT_SET_CONTEXT_KEEP_IF_EXISTS a été spécifié pour le paramètre opération de, ce code d’erreur indique qu’un contexte est déjà attaché à la transaction. Un seul contexte peut être attaché à une transaction pour un pilote minifilter donné.
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 réussi 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 transaction valide, ou une valeur non valide a été spécifiée pour le paramètre Operation. 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 FltSetTransactionContext pour attacher un contexte à une transaction ou pour supprimer ou remplacer un contexte de transaction existant. Un pilote minifilter ne peut attacher qu’un seul contexte à une transaction donnée.

Comptage de références

Si FltSetTransactionContext 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 FltSetTransactionContext é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é à la transaction. Le filtre appelant FltSetTransactionContext 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 FltSetTransactionContext 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:

Pour obtenir un contexte de transaction, appelez FltGetTransactionContext.

Exigences

Exigence Valeur
client minimum pris en charge Disponible et pris en charge dans les systèmes d’exploitation Windows Vista et ultérieurs.
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

FltCommitComplete

fltDeleteContext

FltDeleteTransactionContext

FltEnlistInTransaction

FltGetTransactionContext

FltPrePrepareComplete

FltPrepareComplete

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment