建立、初始化及儲存複寫的新中繼資料。
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。
如果 pItemCustomFields 為 NULL 且 cItemCustomFields 不是 0,或者 pItemCustomFields 為非 NULL 且 cItemCustomFields 是 0,或者複寫識別碼或識別碼參數無效,或者 pItemCustomFields 指定的其中一個自訂欄位無效,則為 E_INVALIDARG。
如果存放區尚未開啟,則為 E_UNEXPECTED。
如果 pItemCustomFieldsIndexes 中指定的欄位名稱在 pItemCustomFields 中沒有對應的欄位,則為 SYNC_E_METADATA_FIELD_INVALID_NAME。
如果指定的複寫已經有中繼資料 (例如在第二次呼叫此方法時),則為 SYNC_E_METADATA_REPLICA_ALREADY_EXISTS。
備註
Metadata Storage Service 實作使用的中繼資料存放區對自訂欄位有些限制。如需詳細資訊,請參閱 CUSTOM_FIELD_DEFINITION 結構。
使用 pItemCustomFields 可對項目中繼資料定義一組自訂欄位,每一個欄位都是由唯一的字串名稱和值所組成。這些欄位可用來存放有關預設項目中繼資料集合所不支援之項目的任何其他中繼資料。使用 IItemMetadata 上的各種方法 (如 IItemMetadata::TryGetFieldByteArray 或 IItemMetadata::SetFieldByteArray) 可以存取這些欄位。
使用 pItemCustomFieldsIndexes 可定義一組索引結構描述,這樣就可以使用自訂欄位集合當做索引,更有效率地尋找中繼資料存放區內的項目。索引結構描述可定義為唯一的項目,以確保此索引會定義單一項目。索引結構描述內所包含的每一個欄位也必須存在於為此複寫所定義的自訂欄位結構描述中。索引欄位可在類似 IReplicaMetadata::FindItemMetadataByIndexedFields 和 IReplicaMetadata::FindItemMetadataByUniqueIndexedFields 的方法中使用。