共用方式為


IReconcilableObject::Reconcile 方法 (reconcil.h)

將物件的狀態與一或多個其他物件協調。 對帳會藉由合併所有物件的狀態來形成合併狀態,以更新物件的內部狀態。

語法

HRESULT Reconcile(
  IReconcileInitiator *pInitiator,
  DWORD               dwFlags,
  HWND                hwndOwner,
  HWND                hwndProgressFeedback,
  ULONG               ulcInput,
  IMoniker            **rgpmkOtherInput,
  PLONG               plOutIndex,
  IStorage            *pstgNewResidues,
  PVOID               pvReserved
);

參數

pInitiator

類型: IReconcileInitiator*

對帳程式啟動器的 IReconcileInitiator 介面位址。 此參數不得為 Null

dwFlags

類型: DWORD

對帳的控制項旗標。 此參數可以是零或這些值的組合:

RECONCILEF_FEEDBACKWINDOWVALID

hwndProgressFeedback參數有效。

RECONCILEF_MAYBOTHERUSER

如有需要,公事包協調器可以提示使用者互動。 如果沒有此值,則不允許使用者互動。 hwndOwner參數有效。

RECONCILEF_NORESIDUESOK

公事包協調器可以忽略對帳的要求,並執行對帳。 每當啟動器要求回應時,如果協調器不支援同步處理,就應該檢查此值。 如果沒有這個值,不支援換行器的協調器必須立即傳回REC_E_NORESIDUES。

RECONCILEF_OMITSELFRESIDUE

公事包協調器可以捨棄與此物件相關聯的任何關聯。 啟動器通常會將此值用於從產生到產生迴圈的對帳。

RECONCILEF_ONLYYOUWERECHANGED

正在呼叫 Reconcile 方法,將變更物件中的變更傳播至其他未變更的物件。 只有在登錄中有下列機碼時,才會設定此值。

HKEY_CLASSES_ROOT
   CLSID
      {CLSID of reconciler}
         SingleChangeHook

如果登錄中沒有此機碼,啟動器會藉由讓其他未變更的物件二進位相同複本成為已變更物件的二進位相同複本來執行對帳。 rgpmkOtherInput Monikers 會識別其他物件。 只有在同時設定RECONCILEF_YOUMAYDOTHEUPDATES時,才會在 dwFlags 中設定此值。 如果公事包協調器順利完成更新本身,應該傳回REC_S_IDIDTHEUPDATES, 而且 plOutIndex 參數所指向的變數應該設定為 -1L。 請注意,如果此值是在 dwFlags中設定,則不應該在成功時傳回S_OK。 如果 Reconcile 傳回REC_S_IDIDTHEUPDATES,啟動器將不會儲存來源物件的儲存體。 如果協調器想要回到啟動器的位複製實作,它可能會傳回S_FALSE。

RECONCILEF_RESUMEDRECONCILIATION

公事包協調器應該使用所提供的部分恢復對帳。 如果沒有這個值,協調器應該忽略任何輸入版本中的「考慮但拒絕」資訊。

RECONCILEF_YOUMAYDOTHEUPDATES

公事包協調器可以執行更新。 如果沒有這個值,協調器就無法執行更新。 如果順利完成對帳,協調器應該會在執行更新時傳回REC_S_IDIDTHEUPDATES,如果它未執行更新,則傳回S_OK。

hwndOwner

類型: HWND

做為公事包協調器所建立之任何子視窗之父視窗的控制碼。 只有在 dwFlags中指定RECONCILEF_MAYBOTHERUSER時,此參數才有效。

hwndProgressFeedback

類型: HWND

啟動器要顯示之進度意見反應視窗的控制碼。 只有在 dwFlags中指定RECONCILEF_FEEDBACKWINDOWVALID時,此參數才有效。 公事包協調器可以使用這個視窗控制碼呼叫 SetWindowText 函式,向使用者顯示其他對帳狀態資訊。

ulcInput

類型: ULONG

dwFlags中指定的版本或部分分頁數目。 此參數不得為零。

rgpmkOtherInput

類型: IMoniker**

陣列的位址,其中包含用來存取要協調之版本或部分調和的 Moniker 位址。

plOutIndex

類型: LONG*

接收索引值的變數位址,指出對帳的結果是否與其中一個初始版本相同。 如果對帳結果是兩個或多個版本的組合,變數會設定為 -1L。 否則,它是以零起始的索引,其中 0 表示這個物件、1 表示第一個版本、2 表示第二個版本等等。

pstgNewResidues

類型: IStorage*

IStorage介面的位址,用來儲存新的耙耙。 這個參數可以是 Null ,表示不應該儲存垃圾。

pvReserved

類型: void*

保留;必須是 Null

傳回值

類型: HRESULT

傳回下列其中一個值。

傳回碼 描述
S_OK
對帳已順利完成,且變更必須傳播至其他物件。
S_FALSE
未執行對帳動作。 公事包協調器希望切換回啟動器的位複製實作。 只有在 dwFlags中設定RECONCILEF_ONLYYOUWERECHANGED時,才會傳回此值。
REC_S_IDIDTHEUPDATES
已順利完成對帳,而且所有涉及的物件 (實作 Reconcile 方法的物件,以及 rgpmkOtherInput) 所述的所有其他物件都已適當地更新。 因此,啟動器不需要執行任何進一步的動作來傳播變更。 如果Reconcile傳回此值,plOutIndex所指向的變數應該設定為 -1L。 如果 Reconcile 傳回此值,啟動器將不會儲存來源物件的儲存體。 只有在 dwFlags中設定RECONCILEF_YOUMAYDOTHEUPDATES時,才能傳回此值。
REC_S_NOTCOMPLETE
公事包協調器已完成對帳的部分,但並非全部完成。 可能需要使用者互動。 變更不會傳播至其他物件。
REC_S_NOTCOMPLETEBUTPROPAGATE
公事包協調器已完成對帳的部分,但並非全部完成。 可能需要使用者互動。 這些變更將會傳播至其他物件。
REC_E_NORESIDUES
公事包協調器不支援產生調節器,因此會拒絕要求擷取。 物件的狀態不會變更。
REC_E_ABORTED
公事包協調器已停止對帳,以回應起始端的終止要求 (如需詳細資訊,請參閱 SetAbortCallback) 。 未指定物件的狀態。
REC_E_TOODIFFERENT
無法執行對帳,因為所提供的檔版本太不同。
REC_E_INEEDTODOTHEUPDATES
呼叫物件的 協調 實作時,未設定RECONCILEF_YOUMAYDOTHEUPDATES旗標;此實作需要在 dwFlags 參數中設定此值。
OLE_E_NOTRUNNING
物件是必須執行的 OLE 内嵌物件,才能執行此作業。物件的狀態不變。
E_UNEXPECTED
未指定的錯誤。

需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 reconcil.h
Dll Shell32.dll (4.0 版或更新版本)

另請參閱

IReconcilableObject