Метод 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
Возвращает одно из следующих значений.
Код возврата | Описание |
---|---|
|
Выверка успешно завершена, и изменения должны быть распространены на другие объекты. |
|
Выверки не выполнялись. Выверщик портфеля хочет вернуться к реализации битового копирования инициатора. Это значение может быть возвращено, только если RECONCILEF_ONLYYOUWERECHANGED задано в dwFlags. |
|
Выверка была успешно завершена, и все задействованные объекты (объект, реализующие метод Reconcile и все другие объекты, описанные в rgpmkOtherInput), были обновлены соответствующим образом. Поэтому инициатору не нужно делать никаких дополнительных действий для распространения изменений. Переменная, на которую указывает plOutIndex , должна иметь значение -1L, если функция Согласование возвращает это значение. Инициатор не сохраняет хранилище исходного объекта, если функция При согласовании возвращает это значение. Это значение может быть возвращено, только если RECONCILEF_YOUMAYDOTHEUPDATES задано в dwFlags. |
|
Выверка портфеля завершила некоторые, но не все, сверки. Может потребоваться взаимодействие с пользователем. Изменения не будут распространяться на другие объекты. |
|
Выверка портфеля завершила некоторые, но не все, сверки. Может потребоваться взаимодействие с пользователем. Изменения будут распространены на другие объекты. |
|
Выверка портфеля не поддерживает получение остатков, поэтому запрос на получение остатков отклоняется. Состояние объекта не изменяется. |
|
Сверка портфеля остановила выверку в ответ на запрос на завершение от инициатора (дополнительные сведения см. в разделе SetAbortCallback ). Состояние объекта не указано. |
|
Сверка не может быть выполнена, так как предоставленные версии документа слишком отличаются друг от друга. |
|
Флаг RECONCILEF_YOUMAYDOTHEUPDATES не был установлен при вызове реализации объекта Reconcile ; Для этой реализации требуется, чтобы это значение было задано в параметре dwFlags . |
|
Объект является внедренным объектом OLE, который необходимо запустить перед выполнением этой операции. Состояние объекта не изменяется. |
|
Незаданная ошибка. |
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | reconcil.h |
DLL | Shell32.dll (версия 4.0 или более поздняя) |