Поделиться через


Метод 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 идентифицируют другие объекты. Это значение будет задано в dwFlags , только если RECONCILEF_YOUMAYDOTHEUPDATES также задано. Если средство согласования портфеля успешно завершает обновления, необходимо вернуть REC_S_IDIDTHEUPDATES, а переменная, на которую указывает параметр plOutIndex , должна иметь значение -1L. Обратите внимание, что S_OK не следует возвращать при успешном выполнении, если это значение задано в dwFlags. Инициатор не сохраняет хранилище исходного объекта, если функция Согласование возвращает REC_S_IDIDTHEUPDATES. Если согласитель хочет вернуться к реализации битового копирования инициатора, он может вернуть S_FALSE.

RECONCILEF_RESUMEDRECONCILIATION

Сверка портфеля должна возобновить выверку, используя предоставленные частичные остатки. Без этого значения средство согласования должно игнорировать любые сведения о том, что "считается, но отклонено" в любой из входных версий.

RECONCILEF_YOUMAYDOTHEUPDATES

Выверка портфеля может выполнять обновления. Без этого значения средство выверки не сможет выполнить обновления. Если выверка выполнена успешно, средство согласования должно вернуть REC_S_IDIDTHEUPDATES, если он выполнил обновления, или S_OK, если он не выполнил обновления.

hwndOwner

Тип: HWND

Дескриптор окна, используемого в качестве родительского элемента для всех дочерних окон, создаваемых при согласовании портфеля. Этот параметр действителен, только если RECONCILEF_MAYBOTHERUSER указан в dwFlags.

hwndProgressFeedback

Тип: HWND

Дескриптор окна обратной связи о ходе выполнения, который будет отображаться инициатором. Этот параметр действителен, только если RECONCILEF_FEEDBACKWINDOWVALID указан в dwFlags. Средство согласования портфеля может вызвать функцию SetWindowText , используя этот дескриптор окна, чтобы отобразить пользователю дополнительные сведения о состоянии выверки.

ulcInput

Тип: ULONG

Количество версий или частичных остатков, указанное в dwFlags. Этот параметр не должен быть равен нулю.

rgpmkOtherInput

Тип: IMoniker**

Адрес массива, содержащего адреса моникеров, используемых для доступа к версиям или частичным остаткам, которые необходимо согласовать.

plOutIndex

Тип: LONG*

Адрес переменной, получающей значение индекса, указывающее, идентичен ли результат выверки одной из исходных версий. Переменная имеет значение -1L, если результат выверки представляет собой сочетание двух или более версий. В противном случае это отсчитываемый от нуля индекс: 0 указывает на этот объект, 1 — первую версию, 2 — вторую версию и т. д.

pstgNewResidues

Тип: IStorage*

Адрес интерфейса IStorage , используемого для хранения новых остатков. Этот параметр может иметь значение NULL , чтобы указать, что остатки не должны сохраняться.

pvReserved

Тип: void*

Защищены; значение должно иметь значение NULL.

Возвращаемое значение

Тип: HRESULT

Возвращает одно из следующих значений.

Код возврата Описание
S_OK
Выверка успешно завершена, и изменения должны быть распространены на другие объекты.
S_FALSE
Выверки не выполнялись. Выверщик портфеля хочет вернуться к реализации битового копирования инициатора. Это значение может быть возвращено, только если RECONCILEF_ONLYYOUWERECHANGED задано в dwFlags.
REC_S_IDIDTHEUPDATES
Выверка была успешно завершена, и все задействованные объекты (объект, реализующие метод Reconcile и все другие объекты, описанные в rgpmkOtherInput), были обновлены соответствующим образом. Поэтому инициатору не нужно делать никаких дополнительных действий для распространения изменений. Переменная, на которую указывает plOutIndex , должна иметь значение -1L, если функция Согласование возвращает это значение. Инициатор не сохраняет хранилище исходного объекта, если функция При согласовании возвращает это значение. Это значение может быть возвращено, только если RECONCILEF_YOUMAYDOTHEUPDATES задано в dwFlags.
REC_S_NOTCOMPLETE
Выверка портфеля завершила некоторые, но не все, сверки. Может потребоваться взаимодействие с пользователем. Изменения не будут распространяться на другие объекты.
REC_S_NOTCOMPLETEBUTPROPAGATE
Выверка портфеля завершила некоторые, но не все, сверки. Может потребоваться взаимодействие с пользователем. Изменения будут распространены на другие объекты.
REC_E_NORESIDUES
Выверка портфеля не поддерживает получение остатков, поэтому запрос на получение остатков отклоняется. Состояние объекта не изменяется.
REC_E_ABORTED
Сверка портфеля остановила выверку в ответ на запрос на завершение от инициатора (дополнительные сведения см. в разделе SetAbortCallback ). Состояние объекта не указано.
REC_E_TOODIFFERENT
Сверка не может быть выполнена, так как предоставленные версии документа слишком отличаются друг от друга.
REC_E_INEEDTODOTHEUPDATES
Флаг RECONCILEF_YOUMAYDOTHEUPDATES не был установлен при вызове реализации объекта Reconcile ; Для этой реализации требуется, чтобы это значение было задано в параметре dwFlags .
OLE_E_NOTRUNNING
Объект является внедренным объектом OLE, который необходимо запустить перед выполнением этой операции. Состояние объекта не изменяется.
E_UNEXPECTED
Незаданная ошибка.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header reconcil.h
DLL Shell32.dll (версия 4.0 или более поздняя)

См. также раздел

IReconcilableObject