CreateEnlistment 函数 (ktmw32.h)
创建登记,设置其初始状态,并打开具有指定访问权限的登记的句柄。
语法
HANDLE CreateEnlistment(
[in, optional] LPSECURITY_ATTRIBUTES lpEnlistmentAttributes,
[in] HANDLE ResourceManagerHandle,
[in] HANDLE TransactionHandle,
[in] NOTIFICATION_MASK NotificationMask,
[in, optional] DWORD CreateOptions,
[in, optional] PVOID EnlistmentKey
);
参数
[in, optional] lpEnlistmentAttributes
指向包含登记管理器安全属性 的SECURITY_ATTRIBUTES 结构的指针。 指定 NULL 以获取默认属性。
[in] ResourceManagerHandle
要登记的 RESOURCE Manager (RM) 句柄。
[in] TransactionHandle
RM 在其中登记的事务的句柄。
[in] NotificationMask
此 RM 请求的 TransactionHandle 参数的通知。 有关有效值的列表,请参阅 NOTIFICATION_MASK。
[in, optional] CreateOptions
任何可选的登记说明。
值 | 含义 |
---|---|
|
登记为高级事务管理器。 |
[in, optional] EnlistmentKey
指向 RM 使用的用户定义的结构的指针,在 TRANSACTION_NOTIFICATION 结构中发送通知时返回该结构。 这通常用于将专用结构与此特定事务相关联。
返回值
如果函数成功,则返回值是登记的句柄。
如果函数失败,则返回值为 INVALID_HANDLE_VALUE。 若要获得更多的错误信息,请调用 GetLastError 函数。
以下列表标识了可能的错误代码:
注解
Windows Vista: 在预准备阶段或更高版本中登记的任何尝试都将失败。
如果未在通知掩码中指定接受单阶段提交请求,KTM 将始终执行两阶段提交操作。
在事务中登记时,请记住以下通知规则:
- RM 必须始终请求回滚通知。
- 如果 RM 请求准备通知,则它还必须请求提交通知。
- 如果 RM 请求单阶段提交操作,则它还必须指定准备和提交通知。
- RM 不需要请求提交通知的唯一时间是请求至少一对准备和回滚通知。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | ktmw32.h |
Library | KtmW32.lib |
DLL | KtmW32.dll |