Sync Framework のコア コンポーネント

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 によって実装されるインターフェイスを次に示します。

ファクトリ インターフェイス

次のインターフェイスは、主に、他の 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

変更バッチを復旧同期に含める必要があります。

次のインターフェイスは、1 つの変更を表します。各インターフェイスは、指定された IID を他のインターフェイスの QueryInterface メソッドに渡すことによって取得できます。

インターフェイス IID

ISyncChange インターフェイス

IID_ISyncChange

ISyncChangeWithFilterKeyMap インターフェイス

IID_ISyncChangeWithFilterKeyMap

ISyncChangeWithPrerequisite インターフェイス

IID_ISyncChangeWithPrerequisite

ISyncFullEnumerationChange インターフェイス

IID_ISyncFullEnumerationChange

ISyncMergeTombstoneChange インターフェイス

IID_ISyncMergeTombstoneChange

次のインターフェイスは、ISyncChange オブジェクトに追加情報を追加するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

IFilterTrackingSyncChangeBuilder インターフェイス

ISyncChangeBuilder オブジェクトの QueryInterface メソッドに IID_IFilterTrackingSyncChangeBuilder を渡します。

ISyncChangeBuilder インターフェイス

ISyncChangeBatchBase::AddItemMetadataToGroup など、さまざまなメソッドによって返されます。

次のインターフェイスは、変更単位を処理するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

ISyncChangeUnit インターフェイス

IEnumSyncChangeUnits::Next を呼び出します。

IEnumSyncChangeUnits インターフェイス

ISyncChange::GetChangeUnits などのメソッドを呼び出します。

次のインターフェイスは、変更の一覧を作成または列挙するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

IDestinationChangeVersionsBuilder インターフェイス

IProviderSyncServices::CreateDestinationChangeVersionsBuilder を呼び出します。

IDestinationChangeVersionsBuilder2 インターフェイス

IDestinationChangeVersionsBuilder オブジェクトの QueryInterface メソッドに IID_IDestinationChangeVersionsBuilder2 を渡します。

IEnumSyncChanges インターフェイス

ISyncChangeBatchBase::GetChangeEnumerator または IDestinationChangeVersionsBuilder::GetChangeEnumerator を呼び出します。

IFilterTrackingSyncChangeBuilder インターフェイス

IDestinationChangeVersionsBuilder オブジェクトの QueryInterface メソッドに IID_IFilterTrackingSyncChangeBuilder を渡します。

変更適用元インターフェイス

競合の処理や変更の適用に役立つ、同期先プロバイダーで使用できるインターフェイスを次に示します。

次の表のインターフェイスのいずれも、指定された IID を IProviderSyncServices::CreateChangeApplier メソッド、またはこの表にある別のインターフェイスの QueryInterface メソッドに渡すことによって取得することができます。

インターフェイス IID

IAsynchronousNotifyingChangeApplier インターフェイス

IID_IAsynchronousNotifyingChangeApplier

ISynchronousNotifyingChangeApplier インターフェイス

IID_ISynchronousNotifyingChangeApplier

ISynchronousNotifyingChangeApplier2 インターフェイス

IID_ISynchronousNotifyingChangeApplier2

変更適用元は、IAsynchronousNotifyingChangeApplierTarget::RegisterCallback を呼び出し、次のインターフェイスを同期先プロバイダーに登録します。

インターフェイス IID

IAsynchronousNotifyingChangeApplierTargetCallback インターフェイス

IID_IAsynchronousNotifyingChangeApplierTargetCallback

次のインターフェイスは、競合の検出時および変更の適用時に、変更適用元とプロバイダーの間の通信に使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

ILoadChangeContext インターフェイス

ISynchronousDataRetriever::LoadChangeData などのメソッドに渡されます。

IFilterTrackingSaveChangeContext インターフェイス

ISaveChangeContext オブジェクトまたは ISaveChangeWithChangeUnitsContext オブジェクトの QueryInterface メソッドに IID_IFilterTrackingSaveChangeContext を渡します。

IRecoverableErrorData インターフェイス

IProviderSyncServices::CreateRecoverableErrorDataIRecoverableError::GetRecoverableErrorDataForChange、または IRecoverableError::GetRecoverableErrorDataForChangeUnit を呼び出します。

ISaveChangeContext インターフェイス

ISynchronousNotifyingChangeApplierTarget::SaveChange および IAsynchronousNotifyingChangeApplierTarget::SaveChange に渡されます。

ISaveChangeContext2 インターフェイス

ISaveChangeContext オブジェクトの QueryInterface メソッドに IID_ISaveChangeContext2 を渡します。

ISaveChangeWithChangeUnitsContext インターフェイス

ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits および IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits に渡されます。

ISaveChangeWithChangeUnitsContext2 インターフェイス

ISaveChangeWithChangeUnitsContext オブジェクトの QueryInterface メソッドに IID_ISaveChangeWithChangeUnitsContext2 を渡します。

IDataRetrieverCallback インターフェイス

IAsynchronousDataRetriever::RegisterCallback に渡されます。

次のインターフェイスは、柔軟性を高める必要がある場合に、標準の変更適用元の代わりに使用できます。各インターフェイスを取得するには、指定されたメカニズムを使用します。

インターフェイス 使用するメカニズム

IChangeApplicationContext インターフェイス

IChangeApplicationServices::GetChangeApplicationContext を呼び出します。

IChangeApplicationServices インターフェイス

IID_IChangeApplicationServices を IProviderSyncServices::CreateChangeApplier に渡します。

競合のログ記録

次のインターフェイスは、競合のログ記録に使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

IConflictLogAccess インターフェイス

プロバイダーで実装できます。また、IMemoryConflictLog オブジェクトの QueryInterface メソッドに IID_IConflictLogAccess を渡すことによって取得できます。

IConflictLogWriter インターフェイス

プロバイダーで実装できます。また、IMemoryConflictLog オブジェクトの QueryInterface メソッドに IID_IConflictLogWriter を渡すことによって取得できます。

IEnumLoggedConflicts インターフェイス

IEnumLoggedConflictsBuilder::GetChangeEnumerator を呼び出します。

IEnumLoggedConflictsBuilder インターフェイス

IProviderSyncServices2::CreateLoggedConflictsEnumBuilder を呼び出します。

ILoggedConflict インターフェイス

IProviderSyncServices2::CreateLoggedConflict を呼び出します。

IMemoryConflictLog インターフェイス

IProviderSyncServices2::CreateMemoryConflictLog を呼び出します。

フィルター

次のインターフェイスは、同期スコープに含めるデータを制御するために使用するフィルターに関する情報を表します。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

IChangeUnitListFilterInfo インターフェイス

SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST フラグを IProviderFilteredSyncServices::CreateFilterInfo に渡してから、返された ISyncFilterInfo オブジェクトの QueryInterface メソッドに IID_IChangeUnitListFilterInfo を渡します。

ICombinedFilterInfo インターフェイス

IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo を呼び出します。

ICustomFilterInfo インターフェイス

IProviderCustomFilteredSyncServices::CreateCustomFilterInfo を呼び出します。

IFilterKeyMap インターフェイス

IProviderCustomFilteredSyncServices::CreateFilterKeyMap または ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap を呼び出します。

IFilterRequestCallback インターフェイス

IRequestFilteredSync::SpecifyFilter に渡されます。

IFilterTrackingRequestCallback インターフェイス

IFilterTrackingProvider::SpecifyTrackedFilters に渡されます。

ISyncFilterInfo インターフェイス

IProviderFilteredSyncServices::CreateFilterInfo などのメソッドを呼び出します。

ISyncFilterInfo2 インターフェイス

ISyncFilterInfo オブジェクトの QueryInterface メソッドに IID_ISyncFilterInfo2 を渡します。

ナレッジ メタデータ

次のインターフェイスは、ナレッジ オブジェクトを表します。次の表のインターフェイスのいずれも、指定された 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::FindClockVectorForItem または ISyncKnowledge::FindClockVectorForChangeUnit

IClockVectorElement インターフェイス

IEnumClockVector::Next

IEnumClockVector インターフェイス

IClockVector::GetClockVectorElements

ICoreFragment インターフェイス

ICoreFragmentInspector::NextCoreFragments

IReplicaKeyMap インターフェイス

IProviderSyncServices::CreateReplicaKeyMap または ISyncKnowledge::GetReplicaKeyMap

次のインターフェイスは、ナレッジ オブジェクトを調査および構築するために使用されます。各インターフェイスは、指定されたメカニズムによって取得できます。

インターフェイス 使用するメカニズム

IConstructReplicaKeyMap インターフェイス

IReplicaKeyMap オブジェクトの QueryInterface メソッドに IID_IConstructReplicaKeyMap を渡します。

ICoreFragmentInspector インターフェイス

ISyncKnowledge2::GetInspector に IID_ICoreFragmentInspector を渡します。

IKnowledgeBuilder インターフェイス

IClockVectorServices::CreateKnowledgeBuilder を呼び出します。

IKnowledgeBuilder2 インターフェイス

IKnowledgeBuilder オブジェクトの QueryInterface メソッドに IID_IKnowledgeBuilder2 を渡します。

セッション インターフェイス

次のインターフェイスは、同期アプリケーションで、同期セッションを開始してそのセッションに関する情報を取得するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。

インターフェイス 使用するメカニズム

ISyncSession インターフェイス

IApplicationSyncServices::CreateSyncSession を呼び出します。

ISyncSessionExtendedErrorInfo インターフェイス

ISyncSession オブジェクトの QueryInterface メソッドに IID_ISyncSessionExtendedErrorInfo を渡します。

ISyncSessionState インターフェイス

IProviderSyncServices2::CreateSyncSessionState を呼び出します。また、Sync Framework によって、IKnowledgeSyncProvider::BeginSession および IKnowledgeSyncProvider::EndSession に渡されます。

ISyncSessionState2 インターフェイス

ISyncSessionState オブジェクトの QueryInterface メソッドに IID_ISyncSessionState2 を渡します。

ISyncDataConversionControl インターフェイス

ISyncSessionState オブジェクトの QueryInterface メソッドに IID_ISyncDataConversionControl を渡します。

アプリケーション コールバック データ インターフェイス

次のインターフェイスは、指定されたコールバック メソッドを使用して、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::SetSourceDataConverter または ISyncDataConversionControl::SetDestinationDataConverter に渡されます。

ISyncFilter インターフェイス

IProviderCustomFilteredSyncServices::CreateCustomFilterInfoIFilterKeyMap::AddFilter などのメソッドに渡されます。

ISyncFilterDeserializer インターフェイス

IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap または IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap に渡されます。

同期アプリケーションによって実装されるインターフェイス

次のインターフェイスは、同期中に発生するイベントの通知を受信するために、同期アプリケーションによって実装されます。Sync Framework は、指定された IID を、ISyncSession::RegisterCallback に渡される ISyncCallback インターフェイスの QueryInterface メソッドに渡すことによって、これらのインターフェイスを取得します。

インターフェイス IID

ISyncCallback インターフェイス

IID_ISyncCallback

ISyncCallback2 インターフェイス

IID_ISyncCallback2

ISyncConstraintCallback インターフェイス

IID_ISyncConstraintCallback

エラー コード

Sync Framework では、問題の報告にカスタム エラーを使用します。詳細については、「Sync Framework のエラー コード」を参照してください。

参照

概念

Sync Framework のアンマネージ API
Microsoft Sync Framework
カスタム プロバイダーの基礎
標準プロバイダーのメタデータの管理
標準のカスタム プロバイダーの実装
同期アプリケーションの実装