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 |
---|---|
|
Il chiamante è già incluso nella transazione. Si tratta di un codice di errore. |
|
L'istanza specificata nel parametro Instance viene distrutta. Si tratta di un codice di errore. |
|
FltEnlistInTransaction ha rilevato un errore di allocazione del pool. Si tratta di un codice di errore. |
|
Il chiamante non ha registrato una routine TransactionNotificationCallback . Si tratta di un codice di errore. |
|
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 |