NtOpenTransaction 函数 (wdm.h)

ZwOpenTransaction 例程获取现有 事务对象的句柄

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenTransaction(
  [out]          PHANDLE            TransactionHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in]           LPGUID             Uow,
  [in, optional] HANDLE             TmHandle
);

参数

[out] TransactionHandle

指向调用方分配的变量的指针,如果 ZwOpenTransaction 返回STATUS_SUCCESS,则接收事务对象的句柄。

[in] DesiredAccess

一个 ACCESS_MASK 值,该值指定调用方请求对事务对象的访问。 有关如何指定此参数的信息,请参阅 ZwCreateTransactionDesiredAccess 参数。

[in, optional] ObjectAttributes

指向指定对象的属性的 OBJECT_ATTRIBUTES 结构的指针。 使用 InitializeObjectAttributes 例程初始化此结构,但仅指定该例程的 InitializedAttributes属性 参数。 如果调用方未在系统线程上下文中运行,则必须在 Attributes 参数中设置OBJ_KERNEL_HANDLE标志。 ObjectAttributes 参数是可选的,可以 NULL

[in] Uow

指向作为事务对象的 工作单位(UOW)标识符的 GUID 的指针。 此 GUID 标识要打开的事务对象。

[in, optional] TmHandle

事务管理器对象的句柄。 如果未 NULL此参数,则 KTM 仅搜索属于指定事务管理器对象的事务对象。 如果此参数 NULL,KTM 将搜索所有事务对象。

返回值

ZwCreateTransaction 如果作成功,则返回STATUS_SUCCESS。 否则,此例程可能会返回以下值之一:

返回代码 描述
STATUS_INVALID_PARAMETER
DesiredAccessUow 参数为零。
STATUS_OBJECT_TYPE_MISMATCH
指定的句柄不是事务对象的句柄。
STATUS_INVALID_HANDLE
对象句柄无效。
STATUS_TRANSACTION_NOT_FOUND
KTM 找不到事务对象。
STATUS_ACCESS_DENIED
DesiredAccess 参数的值无效。
 

例程可能会 返回其他NTSTATUS 值。

言论

通常,资源管理器从以前调用 ZwCreateTransaction的事务客户端接收事务 UOW 后,ZwOpenTransaction

有关 ZwOpenTransaction的详细信息,请参阅 创建资源管理器

NtOpenTransactionZwOpenTransaction 是同一 Windows 本机系统服务例程的两个版本。

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxxZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程

要求

要求 价值
最低支持的客户端 在 Windows Vista 和更高版本的作系统版本中可用。
目标平台 普遍
标头 wdm.h(包括 Wdm.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI、PowerIrpDDis

另请参阅

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

使用本机系统服务例程的 Nt 和 Zw 版本

ZwCommitTransaction

ZwCreateTransaction

ZwQueryInformationTransaction

ZwRollbackTransaction