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 类型的例程的地址存储在 TransactionNotificationCallbackFLT_REGISTRATION 结构的成员中,微型筛选器驱动程序作为 注册 参数 FltRegisterFilter

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

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

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

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

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

要求

要求 价值
最低支持的客户端 此例程在 Windows Vista 和更高版本的 Windows 上可用。
目标平台 普遍
标头 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