Função FltEnlistInTransaction (fltkernel.h)
A rotina FltEnlistInTransaction inseri 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 TxF, foram confirmados). |
TRANSACTION_NOTIFY_PREPARE | Essa notificação é enviada quando a transação inseriu a 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 |
Valor de retorno
FltEnlistInTransaction retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
|
O chamador já está inscrito na transação. Este é um código de erro. |
|
A instância especificada no parâmetro da Instância está sendo interrompida. Este é um código de erro. |
|
FltEnlistInTransaction encontrou um erro de alocação de pool. Este é um código de erro. |
|
O chamador não registrou uma rotina de TransactionNotificationCallback. Este é um código de erro. |
|
O chamador especificou um valor inválido para o parâmetro NotificationMask. Este é um código de erro. |
Observações
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 de TransactionNotificationCallback. Caso contrário, a chamada para FltEnlistInTransaction falhará.
Para registrar uma rotina de TransactionNotificationCallback, um driver de minifiltro armazena o endereço de uma rotina de PFLT_TRANSACTION_NOTIFICATION_CALLBACK de tipo no TransactionNotificationCallback membro da estrutura FLT_REGISTRATION que o driver de minifiltro passa como o parâmetro de Registro do 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 |
---|---|
de cliente com suporte mínimo | Essa rotina está disponível no Windows Vista e versões posteriores do Windows. |
da Plataforma de Destino | Universal |
cabeçalho | fltkernel.h (inclua Fltkernel.h) |
biblioteca | FltMgr.lib |
de DLL | FltMgr.sys |
IRQL | <= APC_LEVEL |