Condividi tramite


ISyncMetadataStore::InitializeReplicaMetadata

Crea, inizializza e salva i nuovi metadati per una replica.

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

Parametri

  • pbReplicaId
    [in] ID della replica rappresentata dai metadati in fase di creazione e inizializzazione.
  • pIdParameters
    [in] Schema del formato dell'ID per il provider.
  • pItemCustomFields
    [in, unique, size_is(cItemCustomFields)] Informazioni sullo schema che descrivono i campi di metadati personalizzati associati agli elementi dei metadati. Può essere NULL se non esistono campi di metadati personalizzati.
  • cItemCustomFields
    [in] Numero di campi in pItemCustomFields.
  • pItemCustomFieldsIndexes
    [in, unique, size_is(cItemCustomFieldsIndexes)] Elenco degli schemi di indice che è possibile utilizzare per trovare in modo più efficiente gli elementi nell'archivio dei metadati. Può essere NULL se non esistono schemi di indice.
  • cItemCustomFieldsIndexes
    [in] Numero di indici in pItemCustomFieldsIndexes.

Valore restituito

  • S_OK.

  • E_POINTER.

  • E_OUTOFMEMORY.

  • E_INVALIDARG se pItemCustomFields è NULL e cItemCustomFields non è 0 o se pItemCustomFields è diverso da NULL e cItemCustomFields è 0 oppure se l'ID replica o i parametri ID non sono validi o se uno dei campi personalizzati specificati da pItemCustomFields non è valido.

  • E_UNEXPECTED se l'archivio non è ancora aperto.

  • SYNC_E_METADATA_FIELD_INVALID_NAME se un nome di campo specificato in pItemCustomFieldsIndexes non dispone di un campo corrispondente specificato in pItemCustomFields.

  • SYNC_E_METADATA_REPLICA_ALREADY_EXISTS se i metadati esistono già per la replica specificata, ad esempio se questo metodo viene chiamato una seconda volta.

Osservazioni

L'archivio dei metadati utilizzato dall'implementazione del servizio di archiviazione dei metadati impone determinate restrizioni sui campi personalizzati. Per ulteriori informazioni, vedere Struttura CUSTOM_FIELD_DEFINITION.

È possibile definire un set di campi personalizzati per i metadati dell'elemento utilizzando pItemCustomFields. Ogni campo è costituito da un valore e da un nome di stringa univoco. Questi campi possono essere utilizzati per archiviare metadati aggiuntivi relativi a un elemento che altrimenti non sarebbero supportati dal set predefinito di metadati dell'elemento. I campi sono accessibili tramite vari metodi su IItemMetadata, ad esempio IItemMetadata::TryGetFieldByteArray o IItemMetadata::SetFieldByteArray.

È possibile definire un set di schemi di indice utilizzando pItemCustomFieldsIndexes affinché sia possibile utilizzare come indici set di campi personalizzati per trovare in modo efficiente gli elementi nell'archivio dei metadati. Uno schema di indice può essere definito come univoco per assicurare che l'indice definisca un singolo elemento. Ogni campo contenuto in uno schema di indice deve esistere anche nello schema dei campi personalizzati definito per la replica. I campi di indice possono essere utilizzati in metodi quali IReplicaMetadata::FindItemMetadataByIndexedFields e IReplicaMetadata::FindItemMetadataByUniqueIndexedFields.

Vedere anche

Riferimento

Interfaccia ISyncMetadataStore