Funzione FltEnlistInTransaction (fltkernel.h)

La routine FltEnlistInTransaction integra un driver minifilter in una determinata transazione.

Sintassi

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

Parametri

[in] Instance

Puntatore di istanza opaco per il chiamante. Questo parametro è obbligatorio e non può essere NULL.

[in] Transaction

Puntatore di transazione opaco per la transazione.

[in] TransactionContext

Puntatore al contesto di transazione del driver minifilter. Questo parametro è obbligatorio e non può essere NULL.

[in] NotificationMask

Specifica il tipo di notifiche che il gestore filtri deve inviare al driver minifilter, come uno o più dei valori elencati nella tabella seguente. Questo parametro è obbligatorio e non può essere zero.

Valore Significato
TRANSACTION_NOTIFY_COMMIT Questa notifica viene inviata quando viene eseguito il commit della transazione.
TRANSACTION_NOTIFY_COMMIT_FINALIZE Per Windows Vista SP1 e versioni successive, questa notifica viene inviata quando viene eseguito il commit completo della transazione, ovvero quando tutti i gestori di risorse associati alla transazione, ad esempio TxF, hanno eseguito il commit.
TRANSACTION_NOTIFY_PREPARE Questa notifica viene inviata quando la transazione ha immesso la fase di preparazione per il commit.
TRANSACTION_NOTIFY_PREPREPARE Questa notifica viene inviata quando la transazione ha immesso la fase di preparazione preliminare per il commit.
TRANSACTION_NOTIFY_ROLLBACK Questa notifica viene inviata quando viene eseguito il rollback o l'interruzione della transazione.
FLT_MAX_TRANSACTION_NOTIFICATIONS TRANSACTION_NOTIFY_COMMIT | TRANSACTION_NOTIFY_PREPARE | TRANSACTION_NOTIFY_PREPREPARE | TRANSACTION_NOTIFY_ROLLBACK

Valore restituito

FltEnlistInTransaction restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_FLT_ALREADY_ENLISTED
Il chiamante è già incluso nella transazione. Si tratta di un codice di errore.
STATUS_FLT_DELETING_OBJECT
L'istanza specificata nel parametro Instance viene distrutta. Si tratta di un codice di errore.
STATUS_INSUFFICIENT_RESOURCES
FltEnlistInTransaction ha rilevato un errore di allocazione del pool. Si tratta di un codice di errore.
STATUS_INVALID_PARAMETER
Il chiamante non ha registrato una routine TransactionNotificationCallback . Si tratta di un codice di errore.
STATUS_INVALID_PARAMETER_4
Il chiamante ha specificato un valore non valido per il parametro NotificationMask . Si tratta di un codice di errore.

Commenti

Un driver minifilter chiama FltEnlistInTransaction per l'integrazione in una transazione. Prima di chiamare FltEnlistInTransaction, il driver minifilter deve avere registrato una routine TransactionNotificationCallback . In caso contrario, la chiamata a FltEnlistInTransaction avrà esito negativo.

Per registrare una routine TransactionNotificationCallback , un driver minifilter archivia l'indirizzo di una routine di tipo PFLT_TRANSACTION_NOTIFICATION_CALLBACK nel membro TransactionNotificationCallback della struttura FLT_REGISTRATION che il driver minifilter passa come parametro Registration di FltRegisterFilter.

Per eseguire il rollback o interrompere una transazione, chiamare FltRollbackEnlistment.

Per allocare un nuovo contesto di transazione, chiamare FltAllocateContext.

Per recuperare un contesto di transazione, chiamare FltGetTransactionContext.

Per eliminare un contesto di transazione, chiamare FltDeleteTransactionContext o FltDeleteContext.

Per impostare un contesto di transazione, chiamare FltSetTransactionContext.

Requisiti

Requisito Valore
Client minimo supportato Questa routine è disponibile in Windows Vista e versioni successive di Windows.
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include Fltkernel.h)
Libreria FltMgr.lib
DLL FltMgr.sys
IRQL <= APC_LEVEL

Vedi anche

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK