Share via


Sync Framework 核心元件

從 Unmanaged 語言可以使用 Sync Framework 核心元件來執行同步處理。這些元件可以用來管理中繼資料和建立同步處理提供者與應用程式。

結構、列舉型別和旗標

下表列出 Sync Framework 定義的結構、列舉型別和旗標集,並列出通常與每個元件相關聯的功能。

元件 相關聯的功能

ID_PARAMETER_PAIR 結構

中繼資料

ID_PARAMETERS 結構

中繼資料

SYNC_FILTER_CHANGE 結構

篩選

SYNC_GID 結構

中繼資料

SYNC_ID 結構

中繼資料

SYNC_RANGE 結構

中繼資料

SYNC_SESSION_STATISTICS 結構

工作階段

SYNC_VERSION 結構

中繼資料

CHANGE_APPLICATION_ACTION 列舉型別

變更套用服務

COLLISION_CONFLICT_RESOLUTION_POLICY 列舉

條件約束衝突

CONFLICT_RESOLUTION_POLICY 列舉

並行衝突

CONSTRAINT_CONFLICT_REASON 列舉型別

條件約束衝突

FILTER_COMBINATION_TYPE 列舉型別

篩選

FILTERING_TYPE 列舉

篩選

KNOWLEDGE_COOKIE_COMPARISON_RESULT 列舉

中繼資料

SYNC_CONSTRAINT_RESOLVE_ACTION 列舉型別

條件約束衝突

SYNC_FULL_ENUMERATION_ACTION 列舉

復原同步處理

SYNC_PROGRESS_STAGE 列舉

應用程式回呼

SYNC_PROVIDER_ROLE 列舉

應用程式回呼

SYNC_RESOLVE_ACTION 列舉

並行衝突

SYNC_SAVE_ACTION 列舉

變更套用

SYNC_SERIALIZATION_VERSION 列舉型別

版本設定

SYNC_STATISTICS 列舉

中繼資料

SYNC_CHANGE_FLAG 旗標

中繼資料

SYNC_FILTER_INFO_FLAG 旗標

篩選

SYNC_SERIALIZE 旗標

中繼資料

Sync Framework 實作的介面

下列介面是由 Sync Framework 實作。

Factory 介面

下列介面主要用於建立其他 Sync Framework 元件。這些介面的每一個都可以透過將 CLSID_SyncServices 和指定的 IID 傳遞至 CoCreateInstance 來建立。

介面 IID

IApplicationSyncServices 介面

IID_IApplicationSyncServices

IClockVectorServices 介面

IID_IClockVectorServices

IProviderCustomFilteredSyncServices 介面

IID_IProviderCustomFilteredSyncServices

IProviderFilteredSyncServices 介面

IID_IProviderFilteredSyncServices

IProviderFilteredSyncServices2 介面

IID_IProviderFilteredSyncServices2

IProviderSyncServices 介面

IID_IProviderSyncServices

IProviderSyncServices2 介面

IID_IProviderSyncServices2

變更批次介面

下列介面代表變更批次。每個介面都可以透過將指定的 IID 傳遞至其他任何介面的 QueryInterface 方法來取得。符合指定的條件時,只會實作某些介面。

介面 IID 條件

ISyncChangeBatch 介面

IID_ISyncChangeBatch

變更批次不能屬於復原同步處理的一部分。

ISyncChangeBatch2 介面

IID_ISyncChangeBatch2

永遠。

ISyncChangeBatchAdvanced 介面

IID_ISyncChangeBatchAdvanced

永遠。

ISyncChangeBatchBase 介面

IID_ISyncChangeBatchBase

永遠。

ISyncChangeBatchBase2 介面

IID_ISyncChangeBatchBase2

永遠。

ISyncChangeBatchWithFilterKeyMap 介面

IID_ISyncChangeBatchWithFilterKeyMap

永遠。

ISyncChangeBatchWithPrerequisite 介面

IID_ISyncChangeBatchWithPrerequisite

永遠。

ISyncFullEnumerationChangeBatch 介面

IID_ISyncFullEnumerationChangeBatch

變更批次必須屬於復原同步處理的一部分。

ISyncFullEnumerationChangeBatch2 介面

IID_ISyncFullEnumerationChangeBatch2

變更批次必須屬於復原同步處理的一部分。

下列介面代表單一變更。每個介面都可以透過將指定的 IID 傳遞至其他任何介面的 QueryInterface 方法來取得。

介面 IID

ISyncChange 介面

IID_ISyncChange

ISyncChangeWithFilterKeyMap 介面

IID_ISyncChangeWithFilterKeyMap

ISyncChangeWithPrerequisite 介面

IID_ISyncChangeWithPrerequisite

ISyncFullEnumerationChange 介面

IID_ISyncFullEnumerationChange

ISyncMergeTombstoneChange 介面

IID_ISyncMergeTombstoneChange

下列介面用來將其他資訊加入至 ISyncChange 物件。每個介面都可以使用指定的機制取得。

介面 取得方式

IFilterTrackingSyncChangeBuilder 介面

將 IID_IFilterTrackingSyncChangeBuilder 傳遞至 ISyncChangeBuilder 物件的 QueryInterface 方法。

ISyncChangeBuilder 介面

透過各種方法傳回,例如 ISyncChangeBatchBase::AddItemMetadataToGroup

下列介面用來處理變更單位。每個介面都可以使用指定的機制取得。

介面 取得方式

ISyncChangeUnit 介面

呼叫 IEnumSyncChangeUnits::Next

IEnumSyncChangeUnits 介面

呼叫方法,例如 ISyncChange::GetChangeUnits

下列介面用來建立或列舉變更的清單。每個介面都可以使用指定的機制取得。

介面 取得方式

IDestinationChangeVersionsBuilder 介面

呼叫 IProviderSyncServices::CreateDestinationChangeVersionsBuilder

IDestinationChangeVersionsBuilder2 介面

將 IID_IDestinationChangeVersionsBuilder2 傳遞至 IDestinationChangeVersionsBuilder 物件的 QueryInterface 方法。

IEnumSyncChanges 介面

呼叫 ISyncChangeBatchBase::GetChangeEnumeratorIDestinationChangeVersionsBuilder::GetChangeEnumerator

IFilterTrackingSyncChangeBuilder 介面

將 IID_IFilterTrackingSyncChangeBuilder 傳遞至 IDestinationChangeVersionsBuilder 物件的 QueryInterface 方法。

變更套用者介面

下列介面可由目的地提供者用來協助處理衝突及套用變更。

下表中的任何介面都可以透過將指定的 IID 傳遞至 IProviderSyncServices::CreateChangeApplier 方法或表格中其他任何介面的 QueryInterface 方法來取得。

介面 IID

IAsynchronousNotifyingChangeApplier 介面

IID_IAsynchronousNotifyingChangeApplier

ISynchronousNotifyingChangeApplier 介面

IID_ISynchronousNotifyingChangeApplier

ISynchronousNotifyingChangeApplier2 介面

IID_ISynchronousNotifyingChangeApplier2

變更套用者會透過呼叫 IAsynchronousNotifyingChangeApplierTarget::RegisterCallback,向目的地提供者註冊下列介面。

介面 IID

IAsynchronousNotifyingChangeApplierTargetCallback 介面

IID_IAsynchronousNotifyingChangeApplierTargetCallback

在衝突偵測與變更應用程式期間,下列介面用於在變更套用者與提供者之間進行通訊。每個介面都可以使用指定的機制取得。

介面 取得方式

ILoadChangeContext 介面

傳遞至方法,例如 ISynchronousDataRetriever::LoadChangeData

IFilterTrackingSaveChangeContext 介面

將 IID_IFilterTrackingSaveChangeContext 傳遞至 ISaveChangeContextISaveChangeWithChangeUnitsContext 物件的 QueryInterface 方法。

IRecoverableErrorData 介面

呼叫 IProviderSyncServices::CreateRecoverableErrorDataIRecoverableError::GetRecoverableErrorDataForChangeIRecoverableError::GetRecoverableErrorDataForChangeUnit

ISaveChangeContext 介面

傳遞至 ISynchronousNotifyingChangeApplierTarget::SaveChangeIAsynchronousNotifyingChangeApplierTarget::SaveChange

ISaveChangeContext2 介面

將 IID_ISaveChangeContext2 傳遞至 ISaveChangeContext 物件的 QueryInterface 方法。

ISaveChangeWithChangeUnitsContext 介面

傳遞至 ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnitsIAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits

ISaveChangeWithChangeUnitsContext2 介面

將 IID_ISaveChangeWithChangeUnitsContext2 傳遞至 ISaveChangeWithChangeUnitsContext 物件的 QueryInterface 方法。

IDataRetrieverCallback 介面

傳遞至 IAsynchronousDataRetriever::RegisterCallback

需要更大的彈性時,可以使用下列介面來代替標準變更套用者。每個介面都是使用指定的機制取得。

介面 取得方式

IChangeApplicationContext 介面

呼叫 IChangeApplicationServices::GetChangeApplicationContext

IChangeApplicationServices 介面

將 IID_IChangeApplicationServices 傳遞至 IProviderSyncServices::CreateChangeApplier

衝突記錄

下列介面用來記錄衝突。每個介面都可以使用指定的機制取得。

介面 取得方式

IConflictLogAccess 介面

可以透過提供者實作,或者透過將 IID_IConflictLogAccess 傳遞至 IMemoryConflictLog 物件的 QueryInterface 方法來取得。

IConflictLogWriter 介面

可以透過提供者實作,或者透過將 IID_IConflictLogWriter 傳遞至 IMemoryConflictLog 物件的 QueryInterface 方法來取得。

IEnumLoggedConflicts 介面

呼叫 IEnumLoggedConflictsBuilder::GetChangeEnumerator

IEnumLoggedConflictsBuilder 介面

呼叫 IProviderSyncServices2::CreateLoggedConflictsEnumBuilder

ILoggedConflict 介面

呼叫 IProviderSyncServices2::CreateLoggedConflict

IMemoryConflictLog 介面

呼叫 IProviderSyncServices2::CreateMemoryConflictLog

篩選

下列介面表示控制包含在同步處理範圍之資料所使用的篩選相關資訊。每個介面都可以使用指定的機制取得。

介面 取得方式

IChangeUnitListFilterInfo 介面

將 SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST 旗標傳遞至 IProviderFilteredSyncServices::CreateFilterInfo,然後將 IID_IChangeUnitListFilterInfo 傳遞至傳回之 ISyncFilterInfo 物件的 QueryInterface 方法。

ICombinedFilterInfo 介面

呼叫 IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo

ICustomFilterInfo 介面

呼叫 IProviderCustomFilteredSyncServices::CreateCustomFilterInfo

IFilterKeyMap 介面

呼叫 IProviderCustomFilteredSyncServices::CreateFilterKeyMapISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap

IFilterRequestCallback 介面

傳遞至 IRequestFilteredSync::SpecifyFilter

IFilterTrackingRequestCallback 介面

傳遞至 IFilterTrackingProvider::SpecifyTrackedFilters

ISyncFilterInfo 介面

呼叫方法,例如 IProviderFilteredSyncServices::CreateFilterInfo

ISyncFilterInfo2 介面

將 IID_ISyncFilterInfo2 傳遞至 ISyncFilterInfo 物件的 QueryInterface 方法。

知識中繼資料

下列介面代表知識物件。表格中的任何介面都可以透過將指定的 IID 傳遞至表格中其他任何介面的 QueryInterface 方法來取得。請注意,當知識物件的最小支援版本不是預期的值 (例如 ISyncKnowledge::GetSingleItemExceptions,也就是當最小支援版本不是 SYNC_SERIALIZATION_VERSION_V1 時會失敗) 時,某些介面上的某些方法會失敗。同時,某些方法將會變更最小支援版本,例如 IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker,這會將最小支援版本設定為 SYNC_SERIALIZATION_VERSION_V3。如需必要或設定之最小支援版本的詳細資訊,請參閱每個方法的參考文件集。

介面 IID

ISyncKnowledge 介面

IID_ISyncKnowledge

ISyncKnowledge2 介面

IID_ISyncKnowledge2

IKnowledgeWithMarkers 介面

IID_IKnowledgeWithMarkers

IForgottenKnowledge 介面

IID_IForgottenKnowledge

下列介面代表知識物件的元件,這個知識物件的最小支援版本為 SYNC_SERIALIZATION_VERSION_V1。知識物件的最小支援版本可透過呼叫 ISyncKnowledge2::GetMinimumSupportedVersion 來取得。每個介面都可以透過呼叫指定的方法來取得。

介面 透過呼叫下列方法取得

IChangeUnitException 介面

IEnumChangeUnitExceptions::Next

IRangeException 介面

IEnumRangeExceptions::Next

ISingleItemException 介面

IEnumSingleItemExceptions::Next

IEnumChangeUnitExceptions 介面

ISyncKnowledge::GetChangeUnitExceptions

IEnumRangeExceptions 介面

ISyncKnowledge::GetRangeExceptions

IEnumSingleItemExceptions 介面

ISyncKnowledge::GetSingleItemExceptions

下列介面代表知識物件所有版本的元件。每個介面都可以透過呼叫指定的方法來取得。

介面 透過呼叫下列方法取得

IClockVector 介面

ISyncKnowledge::FindClockVectorForItemISyncKnowledge::FindClockVectorForChangeUnit

IClockVectorElement 介面

IEnumClockVector::Next

IEnumClockVector 介面

IClockVector::GetClockVectorElements

ICoreFragment 介面

ICoreFragmentInspector::NextCoreFragments

IReplicaKeyMap 介面

IProviderSyncServices::CreateReplicaKeyMapISyncKnowledge::GetReplicaKeyMap

下列介面用來檢查或建立知識物件。每個介面都可以透過指定的機制取得。

介面 取得方式

IConstructReplicaKeyMap 介面

將 IID_IConstructReplicaKeyMap 傳遞至 IReplicaKeyMap 物件的 QueryInterface 方法。

ICoreFragmentInspector 介面

將 IID_ICoreFragmentInspector 傳遞至 ISyncKnowledge2::GetInspector

IKnowledgeBuilder 介面

呼叫 IClockVectorServices::CreateKnowledgeBuilder

IKnowledgeBuilder2 介面

將 IID_IKnowledgeBuilder2 傳遞至 IKnowledgeBuilder 物件的 QueryInterface 方法。

工作階段介面

同步處理應用程式會使用下列介面開始同步處理工作階段並擷取該工作階段的相關資訊。每個介面都可以使用指定的機制取得。

介面 取得方式

ISyncSession 介面

呼叫 IApplicationSyncServices::CreateSyncSession

ISyncSessionExtendedErrorInfo 介面

將 IID_ISyncSessionExtendedErrorInfo 傳遞至 ISyncSession 物件的 QueryInterface 方法。

ISyncSessionState 介面

呼叫 IProviderSyncServices2::CreateSyncSessionState。也透過 Sync Framework 傳遞至 IKnowledgeSyncProvider::BeginSessionIKnowledgeSyncProvider::EndSession

ISyncSessionState2 介面

將 IID_ISyncSessionState2 傳遞至 ISyncSessionState 物件的 QueryInterface 方法。

ISyncDataConversionControl 介面

將 IID_ISyncDataConversionControl 傳遞至 ISyncSessionState 物件的 QueryInterface 方法。

應用程式回呼資料介面

Sync Framework 會使用指定的回呼方法,將下列介面傳遞至同步處理應用程式。

介面 回呼方法

IChangeConflict 介面

ISyncCallback::OnConflict

IConstraintConflict 介面

ISyncConstraintCallback::OnConstraintConflict

IRecoverableError 介面

ISyncCallback::OnRecoverableError

其他介面

下列介面用來註冊提供者轉換子。每個介面都可以透過呼叫指定的方法來取得。

介面 透過呼叫下列方法取得

IProviderConverterRegistration 介面

IProviderSyncServices2::CreateProviderConverterRegistration

由同步處理提供者實作

下列介面是由同步處理提供者實作。

提供者介面

當下列每個介面收到指定的 IID 時,則必須透過 ISyncProvider 物件的 QueryInterface 方法傳回。同步處理應用程式會使用 IApplicationSyncServices::CreateSyncSession,將這些介面傳遞至同步處理工作階段物件。

介面 IID

IKnowledgeSyncProvider 介面

IID_IKnowledgeSyncProvider

ISyncProvider 介面

IID_ISyncProvider

IFilterTrackingProvider 介面

IID_IFilterTrackingProvider

IRequestFilteredSync 介面

IID_IRequestFilteredSync

ISupportFilteredSync 介面

IID_ISupportFilteredSync

變更套用者目標介面

下列介面是由使用同步變更套用者的目的地提供者實作。當每個實作的介面收到指定的 IID 時,則必須透過 ISynchronousNotifyingChangeApplierTarget 物件的 QueryInterface 方法傳回。系統會使用 ISynchronousNotifyingChangeApplier::ApplyChanges 之類的方法,將這些介面傳遞至變更套用者元件。

介面 IID

ISynchronousNotifyingChangeApplierTarget 介面

IID_ISynchronousNotifyingChangeApplierTarget

ISynchronousNotifyingChangeApplierTarget2 介面

IID_ISynchronousNotifyingChangeApplierTarget2

IFilteredReplicaNotifyingChangeApplierTarget 介面

IID_IFilteredReplicaNotifyingChangeApplierTarget

IFilterTrackingNotifyingChangeApplierTarget 介面

IID_IFilterTrackingNotifyingChangeApplierTarget

下列介面是由使用同步變更套用者的目的地提供者實作。系統會使用 IAsynchronousNotifyingChangeApplier::ApplyChanges 之類的方法,將這個介面傳遞至變更套用者元件。

介面 IID

IAsynchronousNotifyingChangeApplierTarget 介面

IID_IAsynchronousNotifyingChangeApplierTarget

資料擷取器介面

下列介面是由使用變更套用者的目的地提供者實作。系統會使用指定的方法之類的方法,將這些介面傳遞至變更套用者元件。

介面 方法

IAsynchronousDataRetriever 介面

IAsynchronousNotifyingChangeApplier::ApplyChanges.

ISynchronousDataRetriever 介面

ISynchronousNotifyingChangeApplier::ApplyChanges.

其他提供者介面

提供者會實作下列介面來使用各種功能,例如篩選和資料轉換。系統會使用指定的機制,將介面傳遞至 Sync Framework。

介面 機制

IEnumItemIds 介面

透過方法傳回,例如 IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins

IProviderConverter 介面

傳遞至 IProviderConverterRegistration::RegisterProviderConverter

ISupportLastWriteTime 介面

當 IID_ISupportLastWriteTime 傳遞至資料擷取器物件的 QueryInterface 時傳回。這通常是 ISynchronousDataRetriever 物件。

ISyncDataConverter 介面

傳遞至 ISyncDataConversionControl::SetSourceDataConverterISyncDataConversionControl::SetDestinationDataConverter

ISyncFilter 介面

傳遞至方法,例如 IProviderCustomFilteredSyncServices::CreateCustomFilterInfoIFilterKeyMap::AddFilter

ISyncFilterDeserializer 介面

傳遞至 IProviderCustomFilteredSyncServices::DeserializeFilterKeyMapIProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap

由同步處理應用程式實作

同步處理應用程式會實作下列介面來接收同步處理期間發生之事件的通知。Sync Framework 會透過將指定的 IID 傳遞至 ISyncCallback 介面 (已傳遞至 ISyncSession::RegisterCallback) 的 QueryInterface 方法取得這些介面。

介面 IID

ISyncCallback 介面

IID_ISyncCallback

ISyncCallback2 介面

IID_ISyncCallback2

ISyncConstraintCallback 介面

IID_ISyncConstraintCallback

錯誤碼

Sync Framework 會使用一組自訂錯誤來報告各種問題。如需詳細資訊,請參閱 Sync Framework 錯誤碼

請參閱

概念

Sync Framework Unmanaged API
Microsoft Sync Framework
自訂提供者的基本原則
管理標準提供者的中繼資料
實作標準的自訂提供者
實作同步處理應用程式