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 成员指定新事件 的安全描述符 。 如果 lpTransactionAttributes 为 NULL,则对象获取默认安全描述符。 访问控制在事务的默认安全描述符中列出 (ACL) 来自创建者的主令牌或模拟令牌。
[in, optional] UOW
保留。 必须为零 (0) 。
[in, optional] CreateOptions
任何可选的事务指令。
值 | 含义 |
---|---|
|
无法分发事务。 |
[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 |