次の方法で共有


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

通知が TRANSACTION_NOTIFICATION 構造体で送信されたときに返される RM によって使用されるユーザー定義構造体へのポインター。 これは通常、プライベート構造をこの特定のトランザクションに関連付けるために使用されます。

戻り値

関数が成功した場合、戻り値は参加リストへのハンドルです。

関数が失敗した場合、戻り値は INVALID_HANDLE_VALUE。 拡張エラー情報を取得するには、GetLastError 関数を呼び出します。

次の一覧は、考えられるエラー コードを示しています。

備考

Windows Vista: 事前準備フェーズ以降に参加しようとすると失敗します。

通知マスク内で単一フェーズコミット要求を受け入れることを指定しない場合、KTM は常に 2 フェーズコミット操作を実行します。

トランザクションに参加するときは、次の通知ルールに注意してください。

  • RM は常にロールバック通知を要求する必要があります。
  • RM が準備通知を要求する場合は、コミット通知も要求する必要があります。
  • RM が単一フェーズのコミット操作を要求する場合は、準備とコミットの通知も指定する必要があります。
  • RM がコミット通知を要求する必要がないのは、少なくとも 1 組の準備通知とロールバック通知を要求するときだけです。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
サポートされる最小サーバー Windows Server 2008
ターゲット プラットフォーム の ウィンドウズ
ヘッダー ktmw32.h
ライブラリ KtmW32.lib
DLL KtmW32.dll

関連項目

CommitComplete

CommitEnlistment

カーネル トランザクション マネージャー関数 の

NOTIFICATION_MASK

OpenEnlistment

TRANSACTION_NOTIFICATION