ISyncMetadataStore::InitializeReplicaMetadata

Crea, inicializa y guarda los nuevos metadatos para una réplica.

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

Parámetros

  • pbReplicaId
    [in] Identificador de réplica para la réplica representada por los metadatos que se van a crear e inicializar.
  • pIdParameters
    [in] Esquema de formato de identificador del proveedor.
  • pItemCustomFields
    [in, unique, size_is(cItemCustomFields)] Información de esquema que describe los campos de metadatos personalizados que están asociados a los elementos de metadatos. Puede ser un valor NULL si no existe ningún campo de metadatos personalizado.
  • cItemCustomFields
    [in] Número de campos de pItemCustomFields.
  • pItemCustomFieldsIndexes
    [in, unique, size_is(cItemCustomFieldsIndexes)] Lista de los esquemas de índice que pueden usarse para buscar más eficazmente elementos en el almacén de metadatos. Puede ser un valor NULL si no existe ningún esquema de índice.
  • cItemCustomFieldsIndexes
    [in] Número de índices de pItemCustomFieldsIndexes.

Valor devuelto

  • S_OK.

  • E_POINTER.

  • E_OUTOFMEMORY.

  • E_INVALIDARG si pItemCustomFields es NULL y cItemCustomFields no es 0, o si pItemCustomFields no es un valor NULL y cItemCustomFields es 0; o si el identificador de réplica o los parámetros de identificación no son válidos; o si uno de los campos personalizados especificados por pItemCustomFields no es válido.

  • E_UNEXPECTED si el almacén no está abierto todavía.

  • SYNC_E_METADATA_FIELD_INVALID_NAME si un nombre de campo especificado en pItemCustomFieldsIndexes no tiene un campo correspondiente especificado en pItemCustomFields.

  • SYNC_E_METADATA_REPLICA_ALREADY_EXISTS si ya existen metadatos para la réplica especificada, como cuando se llama a este método por segunda vez.

Notas

El almacén de metadatos usado por la implementación de Metadata Storage Service impone ciertas restricciones en cuanto a los campos personalizados. Para obtener más información, vea Estructura CUSTOM_FIELD_DEFINITION.

Se puede definir un conjunto de campos personalizados para los metadatos del elemento mediante pItemCustomFields. Cada campo está compuesto por un nombre de cadena único y un valor. Si existen metadatos adicionales relacionados con un elemento que no son admitidos por el conjunto predeterminado de metadatos del elemento, pueden almacenarse en estos campos. Se puede tener acceso a los campos con varios métodos de IItemMetadata, como IItemMetadata::TryGetFieldByteArray o IItemMetadata::SetFieldByteArray.

Se puede definir un conjunto de esquemas de índice con pItemCustomFieldsIndexes para que los conjuntos de campos personalizados se puedan usar como índices para buscar eficazmente elementos en el almacén de metadatos. Un esquema de índice se puede definir como único para asegurarse de que el índice define un solo elemento. Cada uno de los campos contenidos en un esquema de índice también debe existir en el esquema de campos personalizados definido para la réplica. Los campos de índice se pueden usar en métodos como IReplicaMetadata::FindItemMetadataByIndexedFields y IReplicaMetadata::FindItemMetadataByUniqueIndexedFields.

Vea también

Referencia

Interfaz ISyncMetadataStore