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 值,例如以下值之一:
返回代码 | 说明 |
---|---|
|
调用方已在事务中登记。 这是错误代码。 |
|
Instance 参数中指定的 实例 正在被拆毁。 这是错误代码。 |
|
FltEnlistInTransaction 遇到池分配错误。 这是错误代码。 |
|
调用方未注册 TransactionNotificationCallback 例程。 这是错误代码。 |
|
调用方为 NotificationMask 参数指定了无效值。 这是错误代码。 |
注解
微筛选器驱动程序调用 FltEnlistInTransaction 以在事务中登记。 在调用 FltEnlistInTransaction 之前,微筛选器驱动程序必须已注册 TransactionNotificationCallback 例程。 否则,对 FltEnlistInTransaction 的 调用将失败。
为了注册 TransactionNotificationCallback 例程,微筛选器驱动程序将 PFLT_TRANSACTION_NOTIFICATION_CALLBACK 类型的例程的地址存储在FLT_REGISTRATION 结构的TransactionNotificationCallback 成员中,该结构是微筛选器驱动程序作为 FltRegisterFilter 的 Registration 参数传递的。
若要回滚或中止事务,请调用 FltRollbackEnlistment。
若要分配新的事务上下文,请调用 FltAllocateContext。
若要检索事务上下文,请调用 FltGetTransactionContext。
若要删除事务上下文,请调用 FltDeleteTransactionContext 或 FltDeleteContext。
若要设置事务上下文,请调用 FltSetTransactionContext。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 此例程在 Windows Vista 和更高版本的 Windows 上可用。 |
目标平台 | 通用 |
标头 | fltkernel.h (包括 Fltkernel.h) |
Library | FltMgr.lib |
DLL | FltMgr.sys |
IRQL | <= APC_LEVEL |