Función FltCommitFinalizeComplete (fltkernel.h)

La rutina FltCommitFinalizeComplete confirma una notificación de TRANSACTION_NOTIFY_COMMIT_FINALIZE.

Sintaxis

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

Parámetros

[in] Instance

Puntero opaco a una instancia de un controlador de minifiltro. Este parámetro es obligatorio y no puede ser NULL.

[in] Transaction

Puntero opaco a la transacción en la que está inscrito el controlador de minifiltro. Este parámetro es obligatorio y no puede ser NULL.

[in, optional] TransactionContext

Puntero al contexto del controlador de minifiltro para la transacción. Este parámetro es opcional y puede ser NULL.

Valor devuelto

FltCommitFinalizeComplete devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como el siguiente:

Código devuelto Descripción
STATUS_NOT_FOUND
El controlador de minifiltro no estableció un contexto en la transacción. Se trata de un código de error.

Comentarios

Un controlador de minifiltro que está inscrito en una transacción puede recibir una notificación de TRANSACTION_NOTIFY_COMMIT_FINALIZE cuando la transacción se confirma por completo (es decir, cuando todos los administradores de recursos asociados a la transacción, como TxF, se han confirmado). Para un controlador de minifiltro antivirus que realiza exámenes fuera de las transacciones, puede usar este valor de notificación para determinar cuándo debe comenzar el controlador a examinar los archivos.

Para enviar la notificación TRANSACTION_NOTIFY_COMMIT_FINALIZE al controlador de minifiltro, el administrador de filtros llama a la rutina TransactionNotificationCallback del controlador de minifiltro. El controlador de minifiltro confirma esta notificación de una de estas dos maneras:

  • La rutina TransactionNotificationCallback del controlador minifiltro realiza cualquier procesamiento necesario y devuelve STATUS_SUCCESS. (En este caso, el controlador de minifiltro no llama a FltCommitFinalizeComplete).
  • La rutina TransactionNotificationCallback del controlador minifiltro publica cualquier procesamiento necesario en un subproceso de trabajo y devuelve STATUS_PENDING. Después de realizar el procesamiento de forma asincrónica, la rutina de subprocesos de trabajo del controlador minifiltro debe llamar a FltCommitFinalizeComplete para indicar que ha finalizado este procesamiento. Si la rutina de subprocesos de trabajo del controlador minifiltro no llama a FltCommitFinalizeComplete, se perderán determinados recursos del sistema.
Para registrar una rutina TransactionNotificationCallback , un controlador de minifiltro almacena la dirección de una rutina de tipo PFLT_TRANSACTION_NOTIFICATION_CALLBACK en el miembro TransactionNotificationCallback de la estructura FLT_REGISTRATION que el controlador de minifiltro pasa como parámetro Registration de FltRegisterFilter.

Para inscribirse en una transacción, llame a FltEnlistInTransaction.

Para asignar un nuevo contexto de transacción, llame a FltAllocateContext.

Para recuperar un contexto de transacción, llame a FltGetTransactionContext.

Para eliminar un contexto de transacción, llame a FltDeleteTransactionContext o FltDeleteContext.

Para establecer un contexto de transacción, llame a FltSetTransactionContext.

Para obtener más información, vea Notificaciones de transacciones.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista Service Pack 1 (SP1) y versiones posteriores.
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library Fltmgr.lib
IRQL <= APC_LEVEL

Consulte también

FLT_REGISTRATION

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltEnlistInTransaction

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK