ISyncMetadataStore::InitializeReplicaMetadata
Cria, inicializa e salva novos metadados para uma 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] A ID da réplica representada pelos metadados que estão sendo criados e inicializados.
- pIdParameters
[in] O esquema de formato de ID do provedor.
- pItemCustomFields
[in, unique, size_is(cItemCustomFields)] As informações de esquema que descrevem os campos de metadados personalizados que são associados aos itens de metadados. Pode ser NULL se não houver nenhum campo de metadados personalizado.
- cItemCustomFields
[in] O número de campos em pItemCustomFields.
- pItemCustomFieldsIndexes
[in, unique, size_is(cItemCustomFieldsIndexes)] A lista de esquemas de índice que pode ser usada para localizar com mais eficiência os itens no repositório de metadados. Pode ser NULL se não houver nenhum esquema de índice.
- cItemCustomFieldsIndexes
[in] O número de índices em pItemCustomFieldsIndexes.
Valor de retorno
S_OK.
E_POINTER.
E_OUTOFMEMORY.
E_INVALIDARG se pItemCustomFields for NULL e cItemCustomFields não for 0, ou se pItemCustomFields for não NULL e cItemCustomFields for 0; ou se a ID da réplica ou os parâmetros de ID não forem válidos; ou se um dos campos personalizados especificados por pItemCustomFields não for válido.
E_UNEXPECTED se o repositório ainda não estiver aberto.
SYNC_E_METADATA_FIELD_INVALID_NAME quando um nome de campo especificado em pItemCustomFieldsIndexes não tiver um campo correspondente especificado em pItemCustomFields.
SYNC_E_METADATA_REPLICA_ALREADY_EXISTS quando já existem metadados para a réplica especificada, por exemplo, quando esse método é chamado pela segunda vez.
Comentários
O repositório de metadados usado pela implementação do serviço de armazenamento de metadados impõe determinadas restrições nos campos personalizados. Para obter mais informações, consulte Estrutura CUSTOM_FIELD_DEFINITION.
Um conjunto de campos personalizados pode ser definido para metadados de item usando pItemCustomFields. Cada campo consiste em um nome de cadeia de caracteres exclusivo e um valor. Esses campos podem ser usados para armazenar quaisquer metadados adicionais sobre um item que não é aceito de outra forma pelo conjunto padrão de metadados do item. Os campos podem ser acessados através de vários métodos no IItemMetadata, como IItemMetadata::TryGetFieldByteArray ou IItemMetadata::SetFieldByteArray.
Um conjunto de esquemas de índice pode ser definido com o uso de pItemCustomFieldsIndexes de forma que conjuntos de campos personalizados possam ser usados como índices para a localização eficiente de itens no repositório de metadados. Um esquema de índice pode ser definido como exclusivo para assegurar que o índice define um item único. Cada campo contido em um esquema de índice também deve existir no esquema de campo definido para a réplica. Os campos de índice podem ser usados em métodos como IReplicaMetadata::FindItemMetadataByIndexedFields e IReplicaMetadata::FindItemMetadataByUniqueIndexedFields.