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-2818357)包含访问控制项 584-3387065753-4000393942-342927828-138088443)和TRANSACTION_ENLIST权限。 有关详细信息,请参阅 分布式事务处理协调器访问控制组件

要求

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

另请参阅

CommitTransaction

分布式事务处理协调器

内核事务管理器函数

RollbackTransaction

SECURITY_ATTRIBUTES

SetTransactionInformation