FltPrepareComplete function (fltkernel.h)

The FltPrepareComplete routine acknowledges a TRANSACTION_NOTIFY_PREPARE notification.

Syntax

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

Parameters

[in] Instance

Opaque instance pointer for the caller.

[in] Transaction

Opaque transaction pointer for the transaction.

[in, optional] TransactionContext

Pointer to the minifilter driver's transaction context.

Return value

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

Return code Description
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_PREPARE notification when the transaction enters the prepare for commit phase. To send the 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 needed processing and returns STATUS_SUCCESS. In this case, the minifilter driver does not call FltPrepareComplete.
  • The minifilter driver's TransactionNotificationCallback routine posts any needed processing to a worker thread and returns STATUS_PENDING. After performing the processing asynchronously, the minifilter driver's work routine must call FltPrepareComplete to indicate that it has finished this processing. If the minifilter driver's work routine does not call FltPrepareComplete, the transaction prepare operation cannot be completed by the kernel transaction manager.
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.

Requirements

Requirement Value
Minimum supported client The FltPrepareComplete routine is available on Windows Vista and later.
Target Platform Universal
Header fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

See also

FLT_REGISTRATION

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltEnlistInTransaction

FltGetTransactionContext

FltPrePrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK