FltEnlistInTransaction 函式 (fltkernel.h)

FltEnlistInTransaction 例程會在指定的交易中登記迷你篩選驅動程式。

語法

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

參數

[in] Instance

呼叫端的不透明實例指標。 這個參數是必要的,而且不能是 NULL

[in] Transaction

交易的不透明交易指標。

[in] TransactionContext

迷你篩選驅動程式交易內容的指標。 這個參數是必要的,而且不能是 NULL

[in] NotificationMask

指定篩選管理員傳送至迷你篩選驅動程式的通知類型,做為下表所列的一或多個值。 這個參數是必要的,而且不能是零。

意義
TRANSACTION_NOTIFY_COMMIT 此通知會在認可交易時傳送。
TRANSACTION_NOTIFY_COMMIT_FINALIZE 針對 Windows Vista SP1 和更新版本,當交易完全認可 (時,即當所有與交易相關聯的 資源管理員 ,例如 TxF 認可) 時,就會傳送此通知。
TRANSACTION_NOTIFY_PREPARE 當交易進入準備認可階段時,就會傳送此通知。
TRANSACTION_NOTIFY_PREPREPARE 當交易進入預先準備進行認可階段時,就會傳送此通知。
TRANSACTION_NOTIFY_ROLLBACK 當交易回復或中止時,就會傳送此通知。
FLT_MAX_TRANSACTION_NOTIFICATIONS TRANSACTION_NOTIFY_COMMIT |TRANSACTION_NOTIFY_PREPARE |TRANSACTION_NOTIFY_PREPREPARE |TRANSACTION_NOTIFY_ROLLBACK

傳回值

FltEnlistInTransaction 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:

傳回碼 Description
STATUS_FLT_ALREADY_ENLISTED
呼叫端已在交易中登記。 這是錯誤碼。
STATUS_FLT_DELETING_OBJECT
Instance 參數中指定的實例正在中斷。 這是錯誤碼。
STATUS_INSUFFICIENT_RESOURCES
FltEnlistInTransaction 發生集區配置錯誤。 這是錯誤碼。
STATUS_INVALID_PARAMETER
呼叫端未註冊 TransactionNotificationCallback 例程。 這是錯誤碼。
STATUS_INVALID_PARAMETER_4
呼叫端為 NotificationMask 參數指定了無效的值。 這是錯誤碼。

備註

迷你篩選驅動程式會呼叫 FltEnlistInTransaction 以在交易中登記。 呼叫 FltEnlistInTransaction 之前,迷你篩選驅動程式必須已註冊 TransactionNotificationCallback 例程。 否則, 對 FltEnlistInTransaction 的呼叫將會失敗。

若要註冊 TransactionNotificationCallback 例程,迷你篩選驅動程式會將類型為 PFLT_TRANSACTION_NOTIFICATION_CALLBACK 的例程位址儲存在minifilter驅動程式傳遞為 FltRegisterFilter註冊參數之FLT_REGISTRATION結構的 TransactionNotificationCallback 成員中。

若要復原或中止交易,請呼叫 FltRollbackEnlistment

若要配置新的交易內容,請呼叫 FltAllocateContext

若要擷取交易內容,請呼叫 FltGetTransactionContext

若要刪除交易內容,請呼叫 FltDeleteTransactionContextFltDeleteContext

若要設定交易內容,請呼叫 FltSetTransactionContext

規格需求

需求
最低支援的用戶端 此例程適用於 Windows Vista 和更新版本的 Windows。
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 FltMgr.lib
Dll FltMgr.sys
IRQL <= APC_LEVEL

另請參閱

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK