IReconcileInitiator
COM公式ドキュメント
ブリーフケースの調整器 (reconciler) に対して、進捗をイニシエータへ通知する手段、終了オブジェクトを設定する手段、およびドキュメントの特定バージョンを要求する手段を提供するメソッドを公開します。このインターフェイスの実装はイニシエータが担当します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
イニシエータが調整処理を非同期的に終了させるためのオブジェクトを設定します。ブリーフケースの調整器は通常、時間のかかる調整処理やユーザー操作を伴う調整処理に対してこのオブジェクトを設定します。
| punkForAbort | IUnknown* | inoptional | オブジェクトの IUnknown インターフェイスのアドレスです。イニシエータは、IUnknown::Release メソッドでオブジェクトを解放することにより、調整処理の終了要求を通知します。このパラメーターを NULL にすると、以前に指定したオブジェクトを削除するようイニシエータに指示できます。 |
戻り値
型: HRESULT
成功した場合は S_OK 値を返し、それ以外の場合は以下のいずれかのエラー値を返します。
| 戻り値 | 説明 |
|---|---|
| イニシエータは調整処理の終了をサポートしておらず、指定されたオブジェクトを保持しません。 | |
| 不特定のエラーです。 |
解説(Remarks)
イニシエータはオブジェクトを受け入れることも拒否することもできます。イニシエータがオブジェクトを受け入れた場合、ブリーフケースの調整器は、調整処理が完了した時点でこのメソッドを NULL パラメーターで呼び出してオブジェクトを削除する必要があります。調整器は調整処理の完了後にオブジェクトを削除するため、調整処理の完了後にイニシエータがオブジェクトを解放する場合もあります。そのような場合、調整器は終了要求を無視します。
調整処理が終了された場合、Reconcile メソッドは REC_E_ABORTED または REC_E_NOTCOMPLETE のいずれかの値を返す必要があります。
ブリーフケースの調整器が調整処理の完了に向けてどれだけ進捗したかを示します。
| ulProgress | DWORD | in | 進捗率の分子です。 |
| ulProgressMax | DWORD | in | 進捗率の分母です。 |
戻り値
型: HRESULT
成功した場合は S_OK 値を返し、不特定のエラーが発生した場合は E_UNEXPECTED 値を返します。
解説(Remarks)
イニシエータは通常、この進捗の指標を使用して、進捗バー (thermometer gauge) やその他の視覚的なフィードバックをユーザーに向けて更新します。ブリーフケースの調整器は、呼び出しごとに ulProgressMax の値を変更できます。つまり、このメソッドを連続して呼び出しても、必ずしも一定の前進を示すとは限りません。後退することも許容されますが、望ましくはありません。後退の進捗をユーザーに表示するかどうかを判断するのはイニシエータの責任です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IReconcileInitiator "{99180161-DA16-101A-935C-444553540000}"
#usecom global IReconcileInitiator IID_IReconcileInitiator "{}"
#comfunc global IReconcileInitiator_SetAbortCallback 3 sptr
#comfunc global IReconcileInitiator_SetProgressFeedback 4 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。