IReconcilableObject::Metode rekonsiliasi (reconcil.h)

Merekonsiliasi status objek dengan satu atau beberapa objek lainnya. Rekonsiliasi memperbarui status internal objek dengan menggabungkan status semua objek untuk membentuk status gabungan.

Sintaks

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

Parameter

pInitiator

Jenis: IReconcileInitiator*

Alamat antarmuka IReconcileInitiator untuk inisiator proses rekonsiliasi. Parameter ini tidak boleh NULL.

dwFlags

Jenis: DWORD

Bendera kontrol untuk rekonsiliasi. Parameter ini mungkin nol atau kombinasi dari nilai-nilai ini:

RECONCILEF_FEEDBACKWINDOWVALID

Parameter hwndProgressFeedback valid.

RECONCILEF_MAYBOTHERUSER

Pendamping koper dapat meminta interaksi pengguna jika diperlukan. Tanpa nilai ini, interaksi pengguna tidak diizinkan. Parameter hwndOwner valid.

RECONCILEF_NORESIDUESOK

Rekonsiliasi koper dapat mengabaikan permintaan residu dan melakukan rekonsiliasi. Rekonsiliasi yang tidak mendukung residu harus memeriksa nilai ini setiap kali inisiator meminta residu. Tanpa nilai ini, reconciler yang tidak mendukung residu harus segera mengembalikan REC_E_NORESIDUES.

RECONCILEF_OMITSELFRESIDUE

Pendamping tas bisa membuang residu yang terkait dengan obyek ini. Inisiator biasanya menggunakan nilai ini untuk rekonsiliasi yang mengulang dari generasi ke generasi.

RECONCILEF_ONLYYOUWERECHANGED

Metode Rekonsiliasi sedang dipanggil untuk menyebarluaskan perubahan dalam objek yang diubah ke objek lain yang tidak berubah. Nilai ini hanya akan diatur jika kunci berikut ada di registri.

HKEY_CLASSES_ROOT
   CLSID
      {CLSID of reconciler}
         SingleChangeHook

Jika kunci ini tidak ada di registri, inisiator melakukan rekonsiliasi dengan membuat salinan biner objek lain yang tidak berubah identik dari objek yang diubah. Moniker rgpmkOtherInput mengidentifikasi objek lainnya. Nilai ini hanya akan diatur dalam dwFlags jika RECONCILEF_YOUMAYDOTHEUPDATES juga ditetapkan. Jika reconciler koper berhasil menyelesaikan pembaruan itu sendiri, REC_S_IDIDTHEUPDATES harus dikembalikan dan variabel yang diarahkan oleh parameter plOutIndex harus diatur ke -1L. Perhatikan bahwa S_OK tidak boleh dikembalikan pada keberhasilan jika nilai ini diatur dalam dwFlags. Inisiator tidak akan menyimpan penyimpanan objek sumber jika Reconcile mengembalikan REC_S_IDIDTHEUPDATES. Jika reconciler ingin kembali ke implementasi salinan bit inisiator, reconciler dapat mengembalikan S_FALSE.

RECONCILEF_RESUMEDRECONCILIATION

Rekonsiliasi koper harus melanjutkan rekonsiliasi, menggunakan residu parsial yang disediakan. Tanpa nilai ini, reconciler harus mengabaikan informasi "dipertimbangkan tetapi ditolak" di salah satu versi input.

RECONCILEF_YOUMAYDOTHEUPDATES

Pendamping koper dapat melakukan pembaruan. Tanpa nilai ini, reconciler tidak dapat melakukan pembaruan. Jika rekonsiliasi berhasil diselesaikan, reconciler harus mengembalikan REC_S_IDIDTHEUPDATES jika melakukan pembaruan atau S_OK jika tidak melakukan pembaruan.

hwndOwner

Jenis: HWND

Handel ke jendela yang akan digunakan sebagai induk untuk jendela anak mana pun yang dibuat oleh rekonsiliasi tas kerja. Parameter ini hanya valid jika RECONCILEF_MAYBOTHERUSER ditentukan dalam dwFlags.

hwndProgressFeedback

Jenis: HWND

Handel ke jendela umpan balik kemajuan yang akan ditampilkan oleh inisiator. Parameter ini hanya valid jika RECONCILEF_FEEDBACKWINDOWVALID ditentukan dalam dwFlags. Pendamping koper dapat memanggil fungsi SetWindowText menggunakan handel jendela ini untuk menampilkan informasi status rekonsiliasi tambahan kepada pengguna.

ulcInput

Jenis: ULONG

Jumlah versi atau residu parsial yang ditentukan dalam dwFlags. Parameter ini tidak boleh nol.

rgpmkOtherInput

Jenis: IMoniker**

Alamat array yang berisi alamat moniker yang akan digunakan untuk mengakses versi atau residu parsial yang akan direkonsiliasi.

plOutIndex

Jenis: LONG*

Alamat variabel yang menerima nilai indeks yang menunjukkan apakah hasil rekonsiliasi identik dengan salah satu versi awal. Variabel diatur ke -1L jika hasil rekonsiliasi adalah kombinasi dari dua versi atau lebih. Jika tidak, ini adalah indeks berbasis nol, dengan 0 menunjukkan objek ini, 1 menunjukkan versi pertama, 2 menunjukkan versi kedua, dan sebagainya.

pstgNewResidues

Jenis: IStorage*

Alamat antarmuka IStorage yang digunakan untuk menyimpan residu baru. Parameter ini dapat berupa NULL untuk menunjukkan bahwa residu tidak boleh disimpan.

pvReserved

Jenis: void*

Dipesan; harus NULL.

Nilai kembali

Jenis: HRESULT

Mengembalikan salah satu nilai berikut.

Menampilkan kode Deskripsi
S_OK
Rekonsiliasi berhasil diselesaikan, dan perubahan harus disebarluaskan ke objek lain.
S_FALSE
Tidak ada tindakan rekonsiliasi yang dilakukan. Reconciler koper ingin kembali ke implementasi salinan bit inisiator. Nilai ini hanya dapat dikembalikan jika RECONCILEF_ONLYYOUWERECHANGED diatur dalam dwFlags.
REC_S_IDIDTHEUPDATES
Rekonsiliasi berhasil diselesaikan, dan semua objek yang terlibat (objek yang mengimplementasikan metode Rekonsiliasi dan semua objek lain yang dijelaskan oleh rgpmkOtherInput) telah diperbarui dengan tepat. Oleh karena itu, inisiator tidak perlu melakukan apa pun lebih lanjut untuk menyebarluaskan perubahan. Variabel yang diacu oleh plOutIndex harus diatur ke -1L jika Reconcile mengembalikan nilai ini. Inisiator tidak akan menyimpan penyimpanan objek sumber jika Reconcile mengembalikan nilai ini. Nilai ini hanya dapat dikembalikan jika RECONCILEF_YOUMAYDOTHEUPDATES diatur dalam dwFlags.
REC_S_NOTCOMPLETE
Rekonsiliasi koper menyelesaikan beberapa, tetapi tidak semua, dari rekonsiliasi. Mungkin perlu interaksi pengguna. Perubahan tidak akan disebarluaskan ke objek lain.
REC_S_NOTCOMPLETEBUTPROPAGATE
Rekonsiliasi koper menyelesaikan beberapa, tetapi tidak semua, dari rekonsiliasi. Mungkin perlu interaksi pengguna. Perubahan akan disebarluaskan ke objek lain.
REC_E_NORESIDUES
Pendamping koper tidak mendukung pembuatan residu, sehingga permintaan residu ditolak. Status objek tidak berubah.
REC_E_ABORTED
Rekonsiliasi koper menghentikan rekonsiliasi sebagai tanggapan atas permintaan penghentian dari inisiator (lihat SetAbortCallback untuk informasi selengkapnya). Status objek tidak ditentukan.
REC_E_TOODIFFERENT
Rekonsiliasi tidak dapat dilakukan karena versi dokumen yang disediakan terlalu berbeda.
REC_E_INEEDTODOTHEUPDATES
Bendera RECONCILEF_YOUMAYDOTHEUPDATES tidak diatur ketika implementasi Reconcile objek dipanggil; implementasi ini mengharuskan nilai ini diatur dalam parameter dwFlags .
OLE_E_NOTRUNNING
Objek adalah objek tersemat OLE yang harus dijalankan sebelum operasi ini dapat dilakukan. Status objek tidak berubah.
E_UNEXPECTED
Kesalahan yang tidak ditentukan.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header reconcil.h
DLL Shell32.dll (versi 4.0 atau yang lebih baru)

Lihat juga

IReconcilableObject