Expand Minimize

FltCommitFinalizeComplete routine

The FltCommitFinalizeComplete routine acknowledges a TRANSACTION_NOTIFY_COMMIT_FINALIZE notification.

Syntax


NTSTATUS FltCommitFinalizeComplete(
  _In_      PFLT_INSTANCE Instance,
  _In_      PKTRANSACTION Transaction,
  _In_opt_  PFLT_CONTEXT TransactionContext
);

Parameters

Instance [in]

Opaque pointer to an instance of a minifilter driver. This parameter is required and cannot be NULL.

Transaction [in]

Opaque pointer to the transaction the minifilter driver is currently enlisted in. This parameter is required and cannot be NULL.

TransactionContext [in, optional]

Pointer to the minifilter driver's context for the transaction. This parameter is optional and can be NULL.

Return value

FltCommitFinalizeComplete returns STATUS_SUCCESS or an appropriate NTSTATUS value, such as the following:

Return codeDescription
STATUS_NOT_FOUND

The minifilter driver did not set a context on the transaction. This is an error code.

 

Remarks

A minifilter driver that is enlisted in a transaction can receive a TRANSACTION_NOTIFY_COMMIT_FINALIZE notification when the transaction is fully committed (that is, when all of the resource managers associated with the transaction, such as TxF, have committed). For an antivirus minifilter driver that performs scans outside of transactions, you can use this notification value to determine when the driver should begin scanning files.

To send the TRANSACTION_NOTIFY_COMMIT_FINALIZE notification to the minifilter driver, the filter manager calls the minifilter driver's TransactionNotificationCallback routine. The minifilter driver acknowledges this notification in one of two ways:

  • The minifilter driver's TransactionNotificationCallback routine performs any required processing and returns STATUS_SUCCESS. (In this case, the minifilter driver does not call FltCommitFinalizeComplete.)

  • The minifilter driver's TransactionNotificationCallback routine posts any required processing to a worker thread and returns STATUS_PENDING. After performing the processing asynchronously, the minifilter driver's worker thread routine must call FltCommitFinalizeComplete to indicate that it has finished this processing. If the minifilter driver's worker thread routine does not call FltCommitFinalizeComplete, certain system resources will be leaked.

To register a TransactionNotificationCallback routine, a minifilter driver stores the address of a routine of type PFLT_TRANSACTION_NOTIFICATION_CALLBACK in the TransactionNotificationCallback member of the FLT_REGISTRATION structure that the minifilter driver passes as the Registration parameter of FltRegisterFilter.

To enlist in a transaction, call FltEnlistInTransaction.

To allocate a new transaction context, call FltAllocateContext.

To retrieve a transaction context, call FltGetTransactionContext.

To delete a transaction context, call FltDeleteTransactionContext or FltDeleteContext.

To set a transaction context, call FltSetTransactionContext.

For more information, see Transaction Notifications.

Requirements

Version

Available in Windows Vista Service Pack 1 (SP1) and later.

Header

Fltkernel.h (include Fltkernel.h)

Library

Fltmgr.lib

IRQL

<= APC_LEVEL

See also

FLT_REGISTRATION
FltAllocateContext
FltCommitComplete
FltDeleteContext
FltDeleteTransactionContext
FltEnlistInTransaction
FltGetTransactionContext
FltPrepareComplete
FltPrePrepareComplete
FltRegisterFilter
FltReleaseContext
FltRollbackComplete
FltRollbackEnlistment
FltSetTransactionContext
PFLT_TRANSACTION_NOTIFICATION_CALLBACK

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft