IReplicaMetadata2::GetFilteredFullEnumerationChangeBatch

Возвращает отфильтрованный пакет изменений, содержащий метаданные элементов, значения идентификаторов которых больше указанной нижней границы или равны ей, как часть полного перечисления.

HRESULT GetFilteredFullEnumerationChangeBatch(
  DWORD dwBatchSize,
  ISyncFilterInfo * pFilterInfo,
  IChangeBatchCallback * pCallback,
  const BYTE * pbLowerFullEnumerationBound,
  ISyncKnowledge * pSyncKnowledge,
  ISyncFullEnumerationChangeBatch ** ppChangeBatch);

Параметры

  • dwBatchSize
    [in] Размер возвращаемого пакета изменений.
  • pFilterInfo
    [in] Объект ISyncFilterInfo, представляющий сведения о фильтре, который можно использовать для определения изменений, включаемых в пакет изменений.
  • pCallback
    [in, unique] Объект IChangeBatchCallback, который используется, чтобы определить, следует ли включать элемент в пакет изменений.
  • pbLowerFullEnumerationBound
    [in] Нижняя граница для значений идентификаторов элементов. Этот метод возвращает изменения с идентификаторами большими, чем данное значение идентификатора, или равными ему, если они удовлетворяют критериям фильтрации, указанным в pFilterInfo.
  • pSyncKnowledge
    [in] Набор знаний реплики назначения.
  • ppChangeBatch
    [out] Возвращает пакет изменений.

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

  • S_OK.

  • E_POINTER.

  • E_INVALIDARG, если значение dwBatchSize равно 0.

Замечания

Этот метод упрощает реализацию метода IKnowledgeSyncProvider::GetFullEnumerationChangeBatch службой синхронизации, если используется фильтрация элементов. Этот метод вызывается в процессе восстановления утраченного набора знаний.

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

Реализация этого класса, доступная через интерфейс ISqlSyncMetadataStore, выполняет следующие функции.

  • Добавляет изменения в пакет в порядке следования глобальных идентификаторов.

  • Возвращает все элементы, которые не содержатся в pSyncKnowledge, если значение их идентификаторов меньше pbLowerEnumerationBound и удовлетворяет критериям фильтрации, указанным в pFilterInfo.

  • Вызывает метод SetLastBatch для возвращаемого пакета изменений при отсутствии изменений, которые необходимо отправить.

Примечания по реализации

Этот метод должен выполнить перечисление (в порядке возрастания значений идентификаторов элементов) изменений, значения идентификаторов которых равно pbLowerEnumerationBound или больше него и удовлетворяют критерию фильтрации, указанному в pFilterInfo. Это позволяет платформе Sync Framework определить, какие из элементов поставщика назначения были удалены, но утрачены поставщиком источника.

Если больше нет изменений для отправки после этого пакета, необходимо вызвать метод SetLastBatch применительно к возвращаемому пакету изменений, так как в противном случае Sync Framework снова вызовет метод IKnowledgeSyncProvider::GetFullEnumerationChangeBatch для получения следующего пакета изменений.

Для поставщика, отправляющего данные элемента вместе с метаданными изменения элемента, параметр pSyncKnowledge может использоваться для определения необходимости отправки данных элемента. Если изменение элемента содержится в параметре pSyncKnowledge, то данные элемента отправлять не нужно.

См. также

Справочник

Интерфейс IReplicaMetadata2