Partager via


Fonction FltCommitFinalizeComplete (fltkernel.h)

La routine FltCommitFinalizeComplete reconnaît une notification TRANSACTION_NOTIFY_COMMIT_FINALIZE.

Syntaxe

NTSTATUS FLTAPI FltCommitFinalizeComplete(
  [in]           PFLT_INSTANCE Instance,
  [in]           PKTRANSACTION Transaction,
  [in, optional] PFLT_CONTEXT  TransactionContext
);

Paramètres

[in] Instance

Pointeur opaque vers un instance d’un pilote de minifiltre. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.

[in] Transaction

Pointeur opaque vers la transaction dans laquelle le pilote minifiltre est actuellement inscrit. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.

[in, optional] TransactionContext

Pointeur vers le contexte du pilote de minifiltre pour la transaction. Ce paramètre est facultatif et peut être NULL.

Valeur retournée

FltCommitFinalizeComplete retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, par exemple :

Code de retour Description
STATUS_NOT_FOUND
Le pilote de minifiltre n’a pas défini de contexte sur la transaction. Il s’agit d’un code d’erreur.

Remarques

Un pilote de minifiltre inscrit dans une transaction peut recevoir une notification TRANSACTION_NOTIFY_COMMIT_FINALIZE 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). Pour un pilote de minifiltre antivirus qui effectue des analyses en dehors des transactions, vous pouvez utiliser cette valeur de notification pour déterminer quand le pilote doit commencer l’analyse des fichiers.

Pour envoyer la notification TRANSACTION_NOTIFY_COMMIT_FINALIZE au pilote de minifiltre, le gestionnaire de filtres appelle la routine TransactionNotificationCallback du pilote minifiltre. Le pilote de minifiltre accepte cette notification de l’une des deux manières suivantes :

  • La routine TransactionNotificationCallback du pilote minifiltre effectue tout traitement requis et retourne STATUS_SUCCESS. (Dans ce cas, le pilote minifilter n’appelle pas FltCommitFinalizeComplete.)
  • La routine TransactionNotificationCallback du pilote minifiltre publie tout traitement requis dans un thread worker et retourne STATUS_PENDING. Après avoir effectué le traitement de manière asynchrone, la routine de thread de travail du pilote minifiltre doit appeler FltCommitFinalizeComplete pour indiquer qu’elle a terminé ce traitement. Si la routine de thread de travail du pilote minifiltre n’appelle pas FltCommitFinalizeComplete, certaines ressources système seront divulguées.
Pour inscrire une routine TransactionNotificationCallback , un pilote de minifiltre stocke l’adresse d’une routine de type PFLT_TRANSACTION_NOTIFICATION_CALLBACK dans le membre TransactionNotificationCallback de la structure FLT_REGISTRATION que le pilote de minifiltre transmet comme paramètre Registration de FltRegisterFilter.

Pour vous inscrire dans une transaction, appelez FltEnlistInTransaction.

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.

Pour plus d’informations, consultez Notifications de transaction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista Service Pack 1 (SP1) et versions ultérieures.
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque Fltmgr.lib
IRQL <= APC_LEVEL

Voir aussi

FLT_REGISTRATION

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltEnlistInTransaction

FltGetTransactionContext

FltPrePrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK