ITransactionProxy
COM公式ドキュメント
COM+ トランザクションコンテキストが非 DTC トランザクションと連携するための手段を提供します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
トランザクションをコミットします。
| guid | GUID | in | コミットするトランザクションを識別する GUID。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED に加えて、次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| トランザクションがコミットされました。 | |
| トランザクションが中止されました。 |
解説(Remarks)
ITransactionProxy::Commit を呼び出すと、トランザクションのコミットが試みられます。ただし、次の条件下ではトランザクションが中止されます。
- 参加オブジェクトが SetAbort を呼び出した後にメソッドから戻った場合。
- オブジェクトが DisableCommit を呼び出し、EnableCommit または SetComplete を呼び出さずに戻った場合。
- エラーによって Microsoft 分散トランザクションコーディネーター (DTC) が中止した場合。
トランザクションを中止します。
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがあります。
解説(Remarks)
ITransactionProxy::Abort を呼び出すと、メソッドの戻り時にトランザクションが終了し、すべての参加オブジェクトが自動的に非アクティブ化されます。トランザクションに参加している各リソースマネージャーは、それらのオブジェクトに代わって実行された操作をロールバックします。
非 DTC トランザクションを DTC トランザクションに昇格させます。
| pTransaction | ITransaction** | out | DTC トランザクションを表す ITransaction の実装。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがあります。
解説(Remarks)
非 DTC トランザクションを DTC トランザクションに昇格させる理由には、トランザクションのエクスポートや Queued Moniker Recorder との連携などがあります。
COM+ トランザクションコンテキストがトランザクションに対して投票できるように投票権 (ballot) を提供します。
| pTxAsync | ITransactionVoterNotifyAsync2* | in | 投票要求を投票者に通知する ITransactionVoterNotifyAsync2 の実装。 |
| ppBallot | ITransactionVoterBallotAsync2** | out | 投票者が非 DTC トランザクションを承認または拒否できるようにする ITransactionVoterBallotAsync2 の実装。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがあります。
非 DTC トランザクションの分離レベルを取得します。
| __MIDL__ITransactionProxy0000 | INT* | inout | 非 DTC トランザクションの分離レベルを指定する ISOLATIONLEVEL 値へのポインター。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがあります。
非 DTC トランザクションの識別子を取得します。
| pbstrIdentifier | GUID* | inout | 非 DTC トランザクションを識別する GUID。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがあります。
非 DTC トランザクションコンテキストを複数のトランザクションで再利用できるかどうかを示します。
| pfIsReusable | BOOL* | inout | 非 DTC トランザクションコンテキストを複数のトランザクションで再利用できる場合は TRUE、それ以外の場合は FALSE。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および S_OK を返すことがあります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITransactionProxy "{02558374-DF2E-4DAE-BD6B-1D5C994F9BDC}" #usecom global ITransactionProxy IID_ITransactionProxy "{}" #comfunc global ITransactionProxy_Commit 3 int #comfunc global ITransactionProxy_Abort 4 #comfunc global ITransactionProxy_Promote 5 sptr #comfunc global ITransactionProxy_CreateVoter 6 sptr,sptr #comfunc global ITransactionProxy_GetIsolationLevel 7 var #comfunc global ITransactionProxy_GetIdentifier 8 var #comfunc global ITransactionProxy_IsReusable 9 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ITransactionProxy "{02558374-DF2E-4DAE-BD6B-1D5C994F9BDC}" #usecom global ITransactionProxy IID_ITransactionProxy "{}" #comfunc global ITransactionProxy_Commit 3 int #comfunc global ITransactionProxy_Abort 4 #comfunc global ITransactionProxy_Promote 5 sptr #comfunc global ITransactionProxy_CreateVoter 6 sptr,sptr #comfunc global ITransactionProxy_GetIsolationLevel 7 sptr #comfunc global ITransactionProxy_GetIdentifier 8 sptr #comfunc global ITransactionProxy_IsReusable 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。