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

要登记的资源管理器(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 请求单阶段提交操作,则还必须指定准备和提交通知。
  • 请求提交通知的唯一时间是请求至少一对准备和回滚通知。

要求

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

另请参阅

CommitComplete

CommitEnlistment

内核事务管理器函数

NOTIFICATION_MASK

OpenEnlistment

TRANSACTION_NOTIFICATION