CreateTransaction 函数 (ktmw32.h)

创建新的事务对象。

语法

HANDLE CreateTransaction(
  [in, optional] LPSECURITY_ATTRIBUTES lpTransactionAttributes,
  [in, optional] LPGUID                UOW,
  [in, optional] DWORD                 CreateOptions,
  [in, optional] DWORD                 IsolationLevel,
  [in, optional] DWORD                 IsolationFlags,
  [in, optional] DWORD                 Timeout,
  [in, optional] LPWSTR                Description
);

参数

[in, optional] lpTransactionAttributes

指向 SECURITY_ATTRIBUTES 结构的指针,该结构确定返回的句柄是否可以由子进程继承。 如果此参数为 NULL,则无法继承句柄。

结构的 lpSecurityDescriptor 成员指定新事件 的安全描述符 。 如果 lpTransactionAttributesNULL,则对象获取默认安全描述符。 访问控制在事务的默认安全描述符中列出 (ACL) 来自创建者的主令牌或模拟令牌。

[in, optional] UOW

保留。 必须为零 (0) 。

[in, optional] CreateOptions

任何可选的事务指令。

含义
TRANSACTION_DO_NOT_PROMOTE
无法分发事务。

[in, optional] IsolationLevel

保留;指定零 (0) 。

[in, optional] IsolationFlags

保留;指定零 (0) 。

[in, optional] Timeout

超时间隔(以毫秒为单位)。 如果指定了非零值,则事务将在间隔过后中止(如果尚未达到准备状态)。

指定零 (0) 或 INFINITE 以提供无限超时。

[in, optional] Description

事务的用户可读说明。

返回值

如果函数成功,则返回值是事务的句柄。

如果函数失败,则返回值为 INVALID_HANDLE_VALUE。 若要获得更多的错误信息,请调用 GetLastError 函数。

以下列表标识了可能的错误代码:

注解

使用 CloseHandle 函数关闭事务句柄。 如果在客户端使用事务句柄调用 CommitTransaction 函数之前关闭了最后一个事务句柄,则 KTM 将回滚该事务。

如果事务可能需要提升到分布式事务,则必须授予分布式事务处理协调器 (DTC) 在事务中登记的访问权限。 为此, lpTransactionAttributes 参数需要包含具有 DTC SID (S-1-5-80-2818357584-的访问控制条目 3387065753-4000393942-342927828-138088443) 和TRANSACTION_ENLIST权限。 有关详细信息,请参阅分布式事务处理协调器和访问控制组件

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 ktmw32.h
Library KtmW32.lib
DLL KtmW32.dll

另请参阅

CommitTransaction

分布式事务处理协调器

内核事务管理器函数

RollbackTransaction

SECURITY_ATTRIBUTES

SetTransactionInformation