ISyncMetadataStore::InitializeReplicaMetadata
レプリカの新しいメタデータを作成、初期化、保存します。
HRESULT InitializeReplicaMetadata(
BYTE * pbReplicaId,
ID_PARAMETERS * pIdParameters,
CUSTOM_FIELD_DEFINITION * pItemCustomFields,
ULONG cItemCustomFields,
CUSTOM_FIELDS_INDEX * pItemCustomFieldsIndexes,
BYTE cItemCustomFieldsIndexes);
パラメーター
- pbReplicaId
[in] 作成および初期化されているメタデータによって表されるレプリカのレプリカ ID です。
- pIdParameters
[in] プロバイダーの ID 形式スキーマです。
- 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。
pItemCustomFields が NULL で cItemCustomFields が 0 でない場合、pItemCustomFields が NULL 以外で cItemCustomFields が 0 の場合、レプリカ ID か ID パラメーターが有効でない場合、または pItemCustomFields で指定したカスタム フィールドが有効でない場合は E_INVALIDARG。
ストアがまだ開いていない場合は E_UNEXPECTED。
pItemCustomFieldsIndexes で指定したフィールド名に相当するフィールドが、pItemCustomFields で指定したフィールドにない場合は SYNC_E_METADATA_FIELD_INVALID_NAME。
このメソッドが 2 回呼び出された場合など、指定したレプリカにメタデータが既に存在するときは SYNC_E_METADATA_REPLICA_ALREADY_EXISTS。
解説
Metadata Storage Service の実装によって使用されるメタデータ ストアは、カスタム フィールドに特定の制限を課します。詳細については、「CUSTOM_FIELD_DEFINITION 構造体」を参照してください。
pItemCustomFields を使用すると、項目メタデータに一連のカスタム フィールドを定義できます。各フィールドは一意の文字列の名前と値で構成されます。これらのフィールドを使用すると、既定の項目メタデータ セットではサポートされていない追加のメタデータを項目について保存できます。フィールドにアクセスするには、IItemMetadata::TryGetFieldByteArray や IItemMetadata::SetFieldByteArray などのさまざまなメソッドを IItemMetadata に対して使用します。
pItemCustomFieldsIndexes を使用してインデックス スキーマを定義すると、一連のカスタム フィールドをインデックスとして使用して、メタデータ ストア内の項目を効率的に検索できるようになります。インデックス スキーマを一意に定義すると、インデックスによって単一の項目が定義されるようになります。インデックス スキーマに含まれている各フィールドは、レプリカ用に定義されたカスタム フィールド スキーマ内にも存在する必要があります。インデックス フィールドは、IReplicaMetadata::FindItemMetadataByIndexedFields や IReplicaMetadata::FindItemMetadataByUniqueIndexedFields などのメソッドで使用できます。