Resource Managerの作成
サービスまたはコンポーネントを記述していて、トランザクション サービスを使用する必要がある場合、またはカーネル トランザクションの状態を監視する必要がある場合は、リソース マネージャー (RM) を作成する必要があります。
リソース マネージャーを記述するには、複数のカーネル オブジェクトを作成する必要があります。 RM で使用されるオブジェクトは次のとおりです。
- トランザクション マネージャー (TM) オブジェクト
- Resource Manager オブジェクト
- 参加オブジェクト
まず、TM オブジェクトを作成します。 次の 2 種類の VM があります。
- 揮発性 – これらの VM にはログがないため、状態を回復できません
- Durable – これらの VM にはログがあります
永続 TM を作成するには、CLFS ログを作成して CreateTransactionManager を 呼び出すか、KTM に作成してもらう必要があります。 永続 TM が作成されたら、 最初に RecoverTransactionManager を呼び出して TM を回復する必要があります。 TM が回復した後、使用できるようになります。
既存の TM を回復した場合、この TM に関連付けられているすべての VM が回復メッセージの受信を開始します。 詳細については、「 回復処理」を参照してください。
次に、TM ハンドルを使用して CreateResourceManager を 呼び出して、リソース マネージャーを作成します。 RM は揮発性または持続性があります。 永続的な VM と共に使用できるのは、永続的な TM のみです。
トランザクションで作業する場合は、 CreateEnlistmentを呼び出し、受信する通知を指定することで、トランザクションに参加します。
メモCreateEnlistment の呼び出しが完了する前に、通知の受信を開始できます。
通知を受け取ったら、通知の処理に関連する作業が完了したら、適切な "Complete*" 関数を呼び出します。 完全な関数は次のとおりです。
リソース マネージャーがトランザクションの作業を完了できない場合、または続行すると、アプリケーションがトランザクション内で実行された作業を元に戻すことができない場合は、 RollbackEnlistment を呼び出してトランザクションをロールバックする必要があります。