ISyncMetadataStoreSerializer::DeserializeReplicaMetadata
將標準中繼資料檔案的內容還原序列化至中繼資料儲存服務存放區。當提供者版本變更時,選擇性地升級中繼資料存放區格式。
HRESULT DeserializeReplicaMetadata(
IStream * pStream,
DWORD dwExpectedProviderCompatibilityVersion,
IProviderMetadataUpgradeCallback * pProviderUpgradeCallback);
參數
- pStream
[in] 包含特定複寫之序列化中繼資料的資料流。
- dwExpectedProviderCompatibilityVersion
[in] 預期會包含在標準中繼資料檔案中的提供者相容性版本。如果預期的版本與實際的版本不符,還原序列化會依照設計而失敗 (當 pProviderUpgradeCallback 是 NULL 時),或者呼叫 pProviderUpgradeCallback 方法 (當 pProviderUpgradeCallback 不是 NULL 時)。如需詳細資訊,請參閱從不同版本的元件存取中繼資料和升級中繼資料存放區版本。
- pProviderUpgradeCallback
[in] 因為序列化中繼資料中所包含的提供者版本與 dwExpectedProviderCompatibilityVersion 不同,所以必須升級中繼資料存放區格式時所呼叫的回呼方法。
傳回值
S_OK。
如果序列化資料流中的最高滴答計數值小於或等於中繼資料存放區內的最高滴答計數值,則為 S_FALSE。在這種情況下,表示沒有其他中繼資料要還原序列化。
E_OUTOFMEMORY
E_POINTER
如果呼叫沒有開啟之中繼資料存放區的方法,則為 SYNC_E_INVALIDOPERATION。
如果交易無法用來還原序列化中繼資料,則為 SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED。
如果在還原序列化期間發生任何檔案格式錯誤,或者檔案的內容與目標複寫的結構描述不相容,則為 SYNC_E_METADATA_STORE_DESERIALIZATION_ERROR。
如果針對 dwExpectedProviderCompatibilityVersion 所指定的提供者相容性版本與標準中繼資料檔案中指定的版本不符,而且 pProviderUpgradeCallback 是 NULL,則為 SYNC_E_METADATA_STORE_DESERIALIZATION_PROVIDER_VERSION_MISMATCH。
備註
呼叫這個方法之前,必須符合三個條件:
您必須開啟中繼資料存放區。請透過呼叫 ISqlSyncMetadataStore::OpenStore 或 ISqlSyncMetadataStore::CreateStore 開啟存放區。
還原序列化資料的複寫必須已經初始化其中繼資料存放區。若要初始化中繼資料存放區,請呼叫 ISyncMetadataStore::InitializeReplicaMetadata。
使用中交易必須存在 ISqlSyncMetadataStore 物件上。請透過呼叫 ISyncMetadataStore::BeginTransaction 啟用交易。
如果其中一項條件不符,呼叫這個方法就會導致錯誤傳回值。
您可以在提供者版本變更時升級中繼資料結構描述的程序中使用這個方法。如需詳細資訊,請參閱升級中繼資料存放區版本。