Win32 API 日本語リファレンス
ホームUI.LegacyWindowsEnvironmentFeatures › IReconcilableObject

IReconcilableObject

COM
IID99180162-da16-101a-935c-444553540000継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

指定されたドキュメントを調整(リコンサイル)するメソッドを公開します。このインターフェイスの実装は、ブリーフケースリコンサイラーが担当します。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Reconcile(IReconcileInitiator* pInitiator, DWORD dwFlags, HWND hwndOwner, HWND hwndProgressFeedback, DWORD ulcInput, IMoniker** rgpmkOtherInput, INT* plOutIndex, IStorage* pstgNewResidues, void* pvReserved)

あるオブジェクトの状態を、1 つ以上の他のオブジェクトと調整(リコンサイル)します。この調整では、すべてのオブジェクトの状態をマージして結合された状態を形成することにより、オブジェクトの内部状態を更新します。

pInitiatorIReconcileInitiator*in調整プロセスのイニシエーターに対応する IReconcileInitiator インターフェイスのアドレスです。このパラメーターを NULL にすることはできません。
dwFlagsDWORDin

調整の制御フラグです。このパラメーターには、0 または次の値の組み合わせを指定できます。

RECONCILEF_FEEDBACKWINDOWVALID

hwndProgressFeedback パラメーターが有効です。

RECONCILEF_MAYBOTHERUSER

ブリーフケースリコンサイラーは、必要に応じてユーザーの操作を要求できます。この値を指定しない場合、ユーザーの操作は許可されません。hwndOwner パラメーターが有効です。

RECONCILEF_NORESIDUESOK

ブリーフケースリコンサイラーは、残差(residue)の要求を無視して調整を実行できます。残差をサポートしないリコンサイラーは、イニシエーターが残差を要求するたびにこの値を確認する必要があります。この値が指定されていない場合、残差をサポートしないリコンサイラーは直ちに REC_E_NORESIDUES を返す必要があります。

RECONCILEF_OMITSELFRESIDUE

ブリーフケースリコンサイラーは、このオブジェクトに関連付けられた残差を破棄できます。イニシエーターは通常、世代から世代へとループする調整に対してこの値を使用します。

RECONCILEF_ONLYYOUWERECHANGED

変更されたオブジェクトの変更を、変更されていない他のオブジェクトに反映するために Reconcile メソッドが呼び出されています。この値は、次のキーがレジストリに存在する場合にのみ設定されます。

HKEY_CLASSES_ROOT
   CLSID
      {リコンサイラーの CLSID}
         SingleChangeHook

このキーがレジストリに存在しない場合、イニシエーターは、変更されていない他のオブジェクトを変更されたオブジェクトのバイナリ的に同一なコピーにすることによって調整を実行します。 rgpmkOtherInput のモニカーが他のオブジェクトを識別します。この値は、RECONCILEF_YOUMAYDOTHEUPDATES も設定されている場合にのみ dwFlags に設定されます。ブリーフケースリコンサイラーが自身で更新を正常に完了した場合は、REC_S_IDIDTHEUPDATES を返し、 plOutIndex パラメーターが指す変数を -1L に設定する必要があります。この値が dwFlags に設定されている場合、成功時に S_OK を返してはならないことに注意してください。ReconcileREC_S_IDIDTHEUPDATES を返した場合、イニシエーターはソースオブジェクトのストレージを保存しません。リコンサイラーがイニシエーターのビットコピー実装にフォールバックしたい場合は、S_FALSE を返すことができます。

RECONCILEF_RESUMEDRECONCILIATION

ブリーフケースリコンサイラーは、提供された部分的な残差を使用して調整を再開する必要があります。この値が指定されていない場合、リコンサイラーは、いずれの入力バージョンに含まれる「検討されたが却下された」情報も無視する必要があります。

RECONCILEF_YOUMAYDOTHEUPDATES

ブリーフケースリコンサイラーは更新を実行できます。この値が指定されていない場合、リコンサイラーは更新を実行できません。調整が正常に完了した場合、リコンサイラーは、更新を実行したときは REC_S_IDIDTHEUPDATES を、更新を実行しなかったときは S_OK を返す必要があります。

hwndOwnerHWNDinブリーフケースリコンサイラーが作成する子ウィンドウの親として使用されるウィンドウへのハンドルです。このパラメーターは、 dwFlagsRECONCILEF_MAYBOTHERUSER が指定されている場合にのみ有効です。
hwndProgressFeedbackHWNDinイニシエーターによって表示される進行状況フィードバックウィンドウへのハンドルです。このパラメーターは、 dwFlagsRECONCILEF_FEEDBACKWINDOWVALID が指定されている場合にのみ有効です。ブリーフケースリコンサイラーは、このウィンドウハンドルを使用して SetWindowText 関数を呼び出し、追加の調整状況情報をユーザーに表示できます。
ulcInputDWORDin
                <i>dwFlags</i> に指定されたバージョンまたは部分的な残差の数です。このパラメーターを 0 にすることはできません。
rgpmkOtherInputIMoniker**inout調整対象のバージョンまたは部分的な残差にアクセスするために使用するモニカーのアドレスを格納した配列のアドレスです。
plOutIndexINT*out調整の結果が初期バージョンのいずれかと同一かどうかを示すインデックス値を受け取る変数のアドレスです。調整結果が 2 つ以上のバージョンの組み合わせである場合、この変数は -1L に設定されます。それ以外の場合は 0 から始まるインデックスであり、0 はこのオブジェクト、1 は最初のバージョン、2 は 2 番目のバージョン、というように続きます。
pstgNewResiduesIStorage*in新しい残差を格納するために使用する IStorage インターフェイスのアドレスです。残差を保存しないことを示すために、このパラメーターに NULL を指定できます。
pvReservedvoid*optional予約済みです。NULL を指定する必要があります。

戻り値

Type: HRESULT

次のいずれかの値を返します。

リターンコード 説明
S_OK
調整が正常に完了しました。変更を他のオブジェクトに反映する必要があります。
S_FALSE
調整アクションは実行されませんでした。ブリーフケースリコンサイラーは、イニシエーターのビットコピー実装にフォールバックしようとしています。この値は、 dwFlagsRECONCILEF_ONLYYOUWERECHANGED が設定されている場合にのみ返されます。
REC_S_IDIDTHEUPDATES
調整が正常に完了し、関係するすべてのオブジェクト(Reconcile メソッドを実装するオブジェクトと、 rgpmkOtherInput によって記述される他のすべてのオブジェクト)が適切に更新されました。したがって、イニシエーターは変更を反映するためにこれ以上何もする必要はありません。Reconcile がこの値を返す場合は、 plOutIndex が指す変数を -1L に設定する必要があります。Reconcile がこの値を返した場合、イニシエーターはソースオブジェクトのストレージを保存しません。この値は、 dwFlagsRECONCILEF_YOUMAYDOTHEUPDATES が設定されている場合にのみ返されます。
REC_S_NOTCOMPLETE
ブリーフケースリコンサイラーは、調整の一部を完了しましたが、すべてではありません。ユーザーの操作が必要になる場合があります。変更は他のオブジェクトに反映されません。
REC_S_NOTCOMPLETEBUTPROPAGATE
ブリーフケースリコンサイラーは、調整の一部を完了しましたが、すべてではありません。ユーザーの操作が必要になる場合があります。変更は他のオブジェクトに反映されます。
REC_E_NORESIDUES
ブリーフケースリコンサイラーは残差の生成をサポートしていないため、残差の要求は拒否されます。オブジェクトの状態は変更されません。
REC_E_ABORTED
ブリーフケースリコンサイラーは、イニシエーターからの終了要求に応じて調整を停止しました(詳細については SetAbortCallback を参照してください)。オブジェクトの状態は未定義です。
REC_E_TOODIFFERENT
提供されたドキュメントのバージョンが互いに大きく異なりすぎているため、調整を実行できません。
REC_E_INEEDTODOTHEUPDATES
オブジェクトの Reconcile 実装が呼び出されたときに RECONCILEF_YOUMAYDOTHEUPDATES フラグが設定されていませんでした。この実装では、この値が dwFlags パラメーターに設定されている必要があります。
OLE_E_NOTRUNNING
オブジェクトは OLE 埋め込みオブジェクトであり、この操作を実行する前に実行(run)する必要があります。オブジェクトの状態は変更されません。
E_UNEXPECTED
不明なエラーです。
vtbl 4 HRESULT GetProgressFeedbackMaxEstimate(DWORD* pulProgressMax)

調整を完了するために必要な作業量の推定値を取得します。

pulProgressMaxDWORD*out作業量の推定値を受け取る変数のアドレスです。

戻り値

Type: HRESULT

成功した場合は S_OK を返し、それ以外の場合は次のいずれかのエラー値を返します。

リターンコード 説明
OLE_E_NOTRUNNING
オブジェクトは OLE 埋め込みドキュメントであり、この操作を実行する前に実行(run)する必要があります。この呼び出しの結果としてオブジェクトの状態は変更されません。
E_UNEXPECTED
不明なエラーです。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IReconcilableObject "{99180162-DA16-101A-935C-444553540000}"
#usecom global IReconcilableObject IID_IReconcilableObject "{}"
#comfunc global IReconcilableObject_Reconcile                       3 sptr,int,sptr,sptr,int,sptr,var,sptr,sptr
#comfunc global IReconcilableObject_GetProgressFeedbackMaxEstimate  4 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。