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 |
---|---|
|
O chamador já está inscrito na transação. Este é um código de erro. |
|
A instância especificada no parâmetro Instance 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 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. |
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 |