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 |
---|---|
|
L’appelant est déjà inscrit dans la transaction. Il s’agit d’un code d’erreur. |
|
Le instance spécifié dans le paramètre Instance est en cours de déclassé. Il s’agit d’un code d’erreur. |
|
FltEnlistInTransaction a rencontré une erreur d’allocation de pool. Il s’agit d’un code d’erreur. |
|
L’appelant n’a pas inscrit de routine TransactionNotificationCallback . Il s’agit d’un code d’erreur. |
|
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 |