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


ISyncMetadataStore::InitializeReplicaMetadata

Создает, инициализирует и сохраняет новые метаданные для реплики.

HRESULT InitializeReplicaMetadata(
  BYTE * pbReplicaId,
  ID_PARAMETERS * pIdParameters,
  CUSTOM_FIELD_DEFINITION * pItemCustomFields,
  ULONG cItemCustomFields,
  CUSTOM_FIELDS_INDEX * pItemCustomFieldsIndexes,
  BYTE cItemCustomFieldsIndexes);

Параметры

  • pbReplicaId
    [in] Идентификатор реплики, представленной метаданными, которые были созданы и инициализированы.
  • pIdParameters
    [in] Схема формата идентификатора поставщика.
  • pItemCustomFields
    [in, unique, size_is(cItemCustomFields)] Сведения схемы, описывающие пользовательские поля метаданных, связанные с элементами метаданных. Может иметь значение NULL, если пользовательские поля метаданных не существуют.
  • cItemCustomFields
    [in] Число полей в списке pItemCustomFields.
  • pItemCustomFieldsIndexes
    [in, unique, size_is(cItemCustomFieldsIndexes)] Список схем индексов, которые можно использовать для более эффективного поиска элементов в хранилище метаданных. Может иметь значение NULL, если схемы индексов не существуют.
  • cItemCustomFieldsIndexes
    [in] Число индексов в списке pItemCustomFieldsIndexes.

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

  • S_OK.

  • E_POINTER.

  • E_OUTOFMEMORY.

  • E_INVALIDARG, при любом из условий, что параметр pItemCustomFields имеет значение NULL и значение параметра cItemCustomFields отлично от 0 или значение параметра pItemCustomFields отлично от NULL и параметр cItemCustomFields имеет значение 0; идентификатор реплики является недопустимым или недопустимы параметры реплики; недопустимо одно из пользовательских полей, заданных параметром pItemCustomFields.

  • E_UNEXPECTED, если хранилище еще не открыто.

  • SYNC_E_METADATA_FIELD_INVALID_NAME, если для имени поля, заданного в параметре pItemCustomFieldsIndexes, не существует соответствующего поля, задаваемого в параметре pItemCustomFields.

  • SYNC_E_METADATA_REPLICA_ALREADY_EXISTS, если метаданные уже существуют для заданной реплики, например, когда этот метод вызывается во второй раз.

Замечания

Хранилище метаданных, используемое реализацией службы хранилища метаданных, накладывает некоторые ограничения на пользовательские поля. Дополнительные сведения см. в разделе Структура CUSTOM_FIELD_DEFINITION.

Параметр pItemCustomFields позволяет определить набор пользовательских полей для метаданных элемента. Каждое поле состоит из уникального строкового имени и значения. Эти поля можно использовать для хранения любых дополнительных метаданных об элементе, которые не поддерживаются в стандартном наборе метаданных для элемента. Доступ к полям производится через различные методы интерфейса IItemMetadata, например IItemMetadata::TryGetFieldByteArray или IItemMetadata::SetFieldByteArray.

Набор схем индексов можно определить с помощью параметра pItemCustomFieldsIndexes таким образом, чтобы наборы пользовательских полей можно было использовать в качестве индексов для эффективного поиска элементов в хранилище метаданных. Схему индекса можно определить как уникальную, чтобы индекс гарантированно указывал на один элемент. Каждое поле, содержащееся в схеме индекса, должно существовать и в схеме пользовательских полей, определенной для реплики. Поля индекса можно использовать в таких методах, как IReplicaMetadata::FindItemMetadataByIndexedFields и IReplicaMetadata::FindItemMetadataByUniqueIndexedFields.

См. также

Справочник

Интерфейс ISyncMetadataStore