Share via


Fonction FltEnlistInTransaction (fltkernel.h)

La routine FltEnlistInTransaction inscrit un pilote minifilter dans une transaction donnée.

Syntaxe

NTSTATUS FLTAPI FltEnlistInTransaction(
  [in] PFLT_INSTANCE     Instance,
  [in] PKTRANSACTION     Transaction,
  [in] PFLT_CONTEXT      TransactionContext,
  [in] NOTIFICATION_MASK NotificationMask
);

Paramètres

[in] Instance

Pointeur de instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.

[in] Transaction

Pointeur de transaction opaque pour la transaction.

[in] TransactionContext

Pointeur vers le contexte de transaction du pilote minifilter. Ce paramètre est obligatoire et ne peut pas être NULL.

[in] NotificationMask

Spécifie le type de notifications que le gestionnaire de filtres doit envoyer au pilote minifilter, sous la forme d’une ou plusieurs des valeurs répertoriées dans le tableau suivant. Ce paramètre est obligatoire et ne peut pas être égal à zéro.

Valeur Signification
TRANSACTION_NOTIFY_COMMIT Cette notification est envoyée lorsque la transaction est en cours de validation.
TRANSACTION_NOTIFY_COMMIT_FINALIZE Pour Windows Vista SP1 et versions ultérieures, cette notification est envoyée lorsque la transaction est entièrement validée (c’est-à-dire lorsque tous les gestionnaires de ressources associés à la transaction, tels que TxF, l’ont validée).
TRANSACTION_NOTIFY_PREPARE Cette notification est envoyée lorsque la transaction est entrée dans la phase de préparation à la validation.
TRANSACTION_NOTIFY_PREPREPARE Cette notification est envoyée lorsque la transaction est entrée dans la phase de préparation préalable à la validation.
TRANSACTION_NOTIFY_ROLLBACK Cette notification est envoyée lorsque la transaction est restaurée ou abandonnée.
FLT_MAX_TRANSACTION_NOTIFICATIONS TRANSACTION_NOTIFY_COMMIT | TRANSACTION_NOTIFY_PREPARE | TRANSACTION_NOTIFY_PREPREPARE | TRANSACTION_NOTIFY_ROLLBACK

Valeur retournée

FltEnlistInTransaction retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, telle que l’une des valeurs suivantes :

Code de retour Description
STATUS_FLT_ALREADY_ENLISTED
L’appelant est déjà inscrit dans la transaction. Il s’agit d’un code d’erreur.
STATUS_FLT_DELETING_OBJECT
Le instance spécifié dans le paramètre Instance est en cours de déclassé. Il s’agit d’un code d’erreur.
STATUS_INSUFFICIENT_RESOURCES
FltEnlistInTransaction a rencontré une erreur d’allocation de pool. Il s’agit d’un code d’erreur.
STATUS_INVALID_PARAMETER
L’appelant n’a pas inscrit de routine TransactionNotificationCallback . Il s’agit d’un code d’erreur.
STATUS_INVALID_PARAMETER_4
L’appelant a spécifié une valeur non valide pour le paramètre NotificationMask . Il s’agit d’un code d’erreur.

Remarques

Un pilote minifilter appelle FltEnlistInTransaction pour s’inscrire dans une transaction. Avant d’appeler FltEnlistInTransaction, le pilote minifilter doit avoir inscrit une routine TransactionNotificationCallback . Sinon, l’appel à FltEnlistInTransaction échouera.

Pour inscrire une routine TransactionNotificationCallback , un pilote minifilter stocke l’adresse d’une routine de type PFLT_TRANSACTION_NOTIFICATION_CALLBACK dans le membre TransactionNotificationCallback de la structure FLT_REGISTRATION que le pilote minifilter transmet en tant que paramètre Registration de FltRegisterFilter.

Pour restaurer ou abandonner une transaction, appelez FltRollbackEnlistment.

Pour allouer un nouveau contexte de transaction, appelez FltAllocateContext.

Pour récupérer un contexte de transaction, appelez FltGetTransactionContext.

Pour supprimer un contexte de transaction, appelez FltDeleteTransactionContext ou FltDeleteContext.

Pour définir un contexte de transaction, appelez FltSetTransactionContext.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Cette routine est disponible sur Windows Vista et les versions ultérieures de Windows.
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
DLL FltMgr.sys
IRQL <= APC_LEVEL

Voir aussi

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrePrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK