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

任何可选的登记说明。

含义
ENLISTMENT_SUPERIOR
1
登记为高级事务管理器。

[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

另请参阅

CommitComplete

CommitEnlistment

内核事务管理器函数

NOTIFICATION_MASK

OpenEnlistment

TRANSACTION_NOTIFICATION