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 类型的例程的地址存储在 TransactionNotificationCallbackFLT_REGISTRATION 结构的成员中,微型筛选器驱动程序作为 注册 参数 FltRegisterFilter。
若要回滚或中止事务,请调用 FltRollbackEnlistment。
若要分配新的事务上下文,请调用 FltAllocateContext。
若要检索事务上下文,请调用 FltGetTransactionContext。
若要删除事务上下文,请调用 FltDeleteTransactionContext 或 FltDeleteContext。
若要设置事务上下文,请调用 FltSetTransactionContext。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 此例程在 Windows Vista 和更高版本的 Windows 上可用。 |
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | FltMgr.lib |
DLL | FltMgr.sys |
IRQL | <= APC_LEVEL |