Função FltEnlistInTransaction (fltkernel.h)

A rotina FltEnlistInTransaction inscreve um driver de minifiltro em uma determinada transação.

Sintaxe

NTSTATUS FLTAPI FltEnlistInTransaction(
  [in] PFLT_INSTANCE     Instance,
  [in] PKTRANSACTION     Transaction,
  [in] PFLT_CONTEXT      TransactionContext,
  [in] NOTIFICATION_MASK NotificationMask
);

Parâmetros

[in] Instance

Um ponteiro de instância opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL.

[in] Transaction

Um ponteiro de transação opaco para a transação.

[in] TransactionContext

Um ponteiro para o contexto de transação do driver de minifiltro. Esse parâmetro é necessário e não pode ser NULL.

[in] NotificationMask

Especifica o tipo de notificações que o gerenciador de filtros deve enviar para o driver de minifiltro, como um ou mais dos valores listados na tabela a seguir. Esse parâmetro é necessário e não pode ser zero.

Valor Significado
TRANSACTION_NOTIFY_COMMIT Essa notificação é enviada quando a transação está sendo confirmada.
TRANSACTION_NOTIFY_COMMIT_FINALIZE Para o Windows Vista SP1 e posterior, essa notificação é enviada quando a transação é totalmente confirmada (ou seja, quando todos os gerenciadores de recursos associados à transação, como o TxF, se comprometeram).
TRANSACTION_NOTIFY_PREPARE Essa notificação é enviada quando a transação entra na fase de preparação para confirmação.
TRANSACTION_NOTIFY_PREPREPARE Essa notificação é enviada quando a transação inseriu a fase de pré-preparação para confirmação.
TRANSACTION_NOTIFY_ROLLBACK Essa notificação é enviada quando a transação está sendo revertida ou anulada.
FLT_MAX_TRANSACTION_NOTIFICATIONS TRANSACTION_NOTIFY_COMMIT | TRANSACTION_NOTIFY_PREPARE | TRANSACTION_NOTIFY_PREPREPARE | TRANSACTION_NOTIFY_ROLLBACK

Retornar valor

FltEnlistInTransaction retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_FLT_ALREADY_ENLISTED
O chamador já está inscrito na transação. Este é um código de erro.
STATUS_FLT_DELETING_OBJECT
A instância especificada no parâmetro Instance está sendo interrompida. Este é um código de erro.
STATUS_INSUFFICIENT_RESOURCES
FltEnlistInTransaction encontrou um erro de alocação de pool. Este é um código de erro.
STATUS_INVALID_PARAMETER
O chamador não registrou uma rotina TransactionNotificationCallback . Este é um código de erro.
STATUS_INVALID_PARAMETER_4
O chamador especificou um valor inválido para o parâmetro NotificationMask . Este é um código de erro.

Comentários

Um driver de minifiltro chama FltEnlistInTransaction para se inscrever em uma transação. Antes de chamar FltEnlistInTransaction, o driver de minifiltro deve ter registrado uma rotina TransactionNotificationCallback . Caso contrário, a chamada para FltEnlistInTransaction falhará.

Para registrar uma rotina TransactionNotificationCallback , um driver de minifiltro armazena o endereço de uma rotina do tipo PFLT_TRANSACTION_NOTIFICATION_CALLBACK no membro TransactionNotificationCallback da estrutura FLT_REGISTRATION que o driver de minifiltro passa como o parâmetro Registration de FltRegisterFilter.

Para reverter ou anular uma transação, chame FltRollbackEnlistment.

Para alocar um novo contexto de transação, chame FltAllocateContext.

Para recuperar um contexto de transação, chame FltGetTransactionContext.

Para excluir um contexto de transação, chame FltDeleteTransactionContext ou FltDeleteContext.

Para definir um contexto de transação, chame FltSetTransactionContext.

Requisitos

Requisito Valor
Cliente mínimo com suporte Essa rotina está disponível no Windows Vista e em versões posteriores do Windows.
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
DLL FltMgr.sys
IRQL <= APC_LEVEL

Confira também

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK