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 值,例如以下值之一:

返回代码 说明
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 类型的例程的地址存储在FLT_REGISTRATION 结构的TransactionNotificationCallback 成员中,该结构是微筛选器驱动程序作为 FltRegisterFilterRegistration 参数传递的。

若要回滚或中止事务,请调用 FltRollbackEnlistment

若要分配新的事务上下文,请调用 FltAllocateContext

若要检索事务上下文,请调用 FltGetTransactionContext

若要删除事务上下文,请调用 FltDeleteTransactionContextFltDeleteContext

若要设置事务上下文,请调用 FltSetTransactionContext

要求

要求
最低受支持的客户端 此例程在 Windows Vista 和更高版本的 Windows 上可用。
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
DLL FltMgr.sys
IRQL <= APC_LEVEL

另请参阅

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK