Sync Framework のコア コンポーネント
Sync Framework コア コンポーネントは、アンマネージ言語から同期を実行するのに使用できます。これらのコンポーネントは、メタデータの管理および同期プロバイダーと同期アプリケーションの作成に使用できます。
構造体、列挙体、およびフラグ
次の表に、Sync Framework によって定義された構造体、列挙体、およびフラグ セットと、各コンポーネントが通常関連付けられている機能を示します。
コンポーネント | 関連付けられている機能 |
---|---|
メタデータ |
|
メタデータ |
|
フィルター |
|
メタデータ |
|
メタデータ |
|
メタデータ |
|
セッション |
|
メタデータ |
|
変更適用サービス |
|
制約の競合 |
|
同時実行の競合 |
|
制約の競合 |
|
フィルター |
|
フィルター |
|
メタデータ |
|
制約の競合 |
|
復旧同期 |
|
アプリケーション コールバック |
|
アプリケーション コールバック |
|
同時実行の競合 |
|
変更の適用 |
|
バージョン管理 |
|
メタデータ |
|
メタデータ |
|
フィルター |
|
メタデータ |
Sync Framework によって実装されるインターフェイス
Sync Framework によって実装されるインターフェイスを次に示します。
ファクトリ インターフェイス
次のインターフェイスは、主に、他の Sync Framework コンポーネントを作成するために使用されます。この各インターフェイスは、CLSID_SyncServices および指定された IID を CoCreateInstance に渡すことによって作成できます。
インターフェイス | IID |
---|---|
IID_IApplicationSyncServices |
|
IID_IClockVectorServices |
|
IID_IProviderCustomFilteredSyncServices |
|
IID_IProviderFilteredSyncServices |
|
IID_IProviderFilteredSyncServices2 |
|
IID_IProviderSyncServices |
|
IID_IProviderSyncServices2 |
変更バッチ インターフェイス
次のインターフェイスは、変更のバッチを表します。各インターフェイスは、指定された IID を他のインターフェイスの QueryInterface メソッドに渡すことによって取得できます。一部のインターフェイスは、指定した条件が満たされる場合にのみ実装されます。
インターフェイス | IID | 条件 |
---|---|---|
IID_ISyncChangeBatch |
変更バッチを復旧同期に含めることはできません。 |
|
IID_ISyncChangeBatch2 |
常に実装されます。 |
|
IID_ISyncChangeBatchAdvanced |
常に実装されます。 |
|
IID_ISyncChangeBatchBase |
常に実装されます。 |
|
IID_ISyncChangeBatchBase2 |
常に実装されます。 |
|
IID_ISyncChangeBatchWithFilterKeyMap |
常に実装されます。 |
|
IID_ISyncChangeBatchWithPrerequisite |
常に実装されます。 |
|
IID_ISyncFullEnumerationChangeBatch |
変更バッチを復旧同期に含める必要があります。 |
|
IID_ISyncFullEnumerationChangeBatch2 |
変更バッチを復旧同期に含める必要があります。 |
次のインターフェイスは、1 つの変更を表します。各インターフェイスは、指定された IID を他のインターフェイスの QueryInterface メソッドに渡すことによって取得できます。
インターフェイス | IID |
---|---|
IID_ISyncChange |
|
IID_ISyncChangeWithFilterKeyMap |
|
IID_ISyncChangeWithPrerequisite |
|
IID_ISyncFullEnumerationChange |
|
IID_ISyncMergeTombstoneChange |
次のインターフェイスは、ISyncChange オブジェクトに追加情報を追加するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
ISyncChangeBuilder オブジェクトの QueryInterface メソッドに IID_IFilterTrackingSyncChangeBuilder を渡します。 |
|
ISyncChangeBatchBase::AddItemMetadataToGroup など、さまざまなメソッドによって返されます。 |
次のインターフェイスは、変更単位を処理するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
IEnumSyncChangeUnits::Next を呼び出します。 |
|
ISyncChange::GetChangeUnits などのメソッドを呼び出します。 |
次のインターフェイスは、変更の一覧を作成または列挙するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
IProviderSyncServices::CreateDestinationChangeVersionsBuilder を呼び出します。 |
|
IDestinationChangeVersionsBuilder オブジェクトの QueryInterface メソッドに IID_IDestinationChangeVersionsBuilder2 を渡します。 |
|
ISyncChangeBatchBase::GetChangeEnumerator または IDestinationChangeVersionsBuilder::GetChangeEnumerator を呼び出します。 |
|
IDestinationChangeVersionsBuilder オブジェクトの QueryInterface メソッドに IID_IFilterTrackingSyncChangeBuilder を渡します。 |
変更適用元インターフェイス
競合の処理や変更の適用に役立つ、同期先プロバイダーで使用できるインターフェイスを次に示します。
次の表のインターフェイスのいずれも、指定された IID を IProviderSyncServices::CreateChangeApplier メソッド、またはこの表にある別のインターフェイスの QueryInterface メソッドに渡すことによって取得することができます。
インターフェイス | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier2 |
変更適用元は、IAsynchronousNotifyingChangeApplierTarget::RegisterCallback を呼び出し、次のインターフェイスを同期先プロバイダーに登録します。
インターフェイス | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTargetCallback |
次のインターフェイスは、競合の検出時および変更の適用時に、変更適用元とプロバイダーの間の通信に使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
ISynchronousDataRetriever::LoadChangeData などのメソッドに渡されます。 |
|
ISaveChangeContext オブジェクトまたは ISaveChangeWithChangeUnitsContext オブジェクトの QueryInterface メソッドに IID_IFilterTrackingSaveChangeContext を渡します。 |
|
IProviderSyncServices::CreateRecoverableErrorData、IRecoverableError::GetRecoverableErrorDataForChange、または IRecoverableError::GetRecoverableErrorDataForChangeUnit を呼び出します。 |
|
ISynchronousNotifyingChangeApplierTarget::SaveChange および IAsynchronousNotifyingChangeApplierTarget::SaveChange に渡されます。 |
|
ISaveChangeContext オブジェクトの QueryInterface メソッドに IID_ISaveChangeContext2 を渡します。 |
|
ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits および IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits に渡されます。 |
|
ISaveChangeWithChangeUnitsContext オブジェクトの QueryInterface メソッドに IID_ISaveChangeWithChangeUnitsContext2 を渡します。 |
|
次のインターフェイスは、柔軟性を高める必要がある場合に、標準の変更適用元の代わりに使用できます。各インターフェイスを取得するには、指定されたメカニズムを使用します。
インターフェイス | 使用するメカニズム |
---|---|
IChangeApplicationServices::GetChangeApplicationContext を呼び出します。 |
|
IID_IChangeApplicationServices を IProviderSyncServices::CreateChangeApplier に渡します。 |
競合のログ記録
次のインターフェイスは、競合のログ記録に使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
プロバイダーで実装できます。また、IMemoryConflictLog オブジェクトの QueryInterface メソッドに IID_IConflictLogAccess を渡すことによって取得できます。 |
|
プロバイダーで実装できます。また、IMemoryConflictLog オブジェクトの QueryInterface メソッドに IID_IConflictLogWriter を渡すことによって取得できます。 |
|
IProviderSyncServices2::CreateLoggedConflictsEnumBuilder を呼び出します。 |
|
フィルター
次のインターフェイスは、同期スコープに含めるデータを制御するために使用するフィルターに関する情報を表します。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST フラグを IProviderFilteredSyncServices::CreateFilterInfo に渡してから、返された ISyncFilterInfo オブジェクトの QueryInterface メソッドに IID_IChangeUnitListFilterInfo を渡します。 |
|
IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo を呼び出します。 |
|
IProviderCustomFilteredSyncServices::CreateCustomFilterInfo を呼び出します。 |
|
IProviderCustomFilteredSyncServices::CreateFilterKeyMap または ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap を呼び出します。 |
|
IProviderFilteredSyncServices::CreateFilterInfo などのメソッドを呼び出します。 |
|
ISyncFilterInfo オブジェクトの QueryInterface メソッドに IID_ISyncFilterInfo2 を渡します。 |
ナレッジ メタデータ
次のインターフェイスは、ナレッジ オブジェクトを表します。次の表のインターフェイスのいずれも、指定された IID をこの表にある別のインターフェイスの QueryInterface メソッドに渡すことによって取得することができます。ナレッジ オブジェクトのサポートされる最小バージョンが想定された値ではない場合、一部のインターフェイスのメソッドの中には失敗するものもあります。たとえば ISyncKnowledge::GetSingleItemExceptions は、サポートされる最小バージョンが SYNC_SERIALIZATION_VERSION_V1 ではない場合に失敗します。また、一部のメソッドでは、サポートされる最小バージョンが変更されます。たとえば、IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker では、サポートされる最小バージョンが SYNC_SERIALIZATION_VERSION_V3 に設定されます。サポートされる最小バージョンのうち、必要なバージョンや設定されるバージョンの詳細については、各メソッドのリファレンス ドキュメントを参照してください。
インターフェイス | IID |
---|---|
IID_ISyncKnowledge |
|
IID_ISyncKnowledge2 |
|
IID_IKnowledgeWithMarkers |
|
IID_IForgottenKnowledge |
次のインターフェイスは、サポートされる最小バージョンが SYNC_SERIALIZATION_VERSION_V1 であるナレッジ オブジェクトのコンポーネントを表します。ナレッジ オブジェクトのサポートされる最小バージョンは、ISyncKnowledge2::GetMinimumSupportedVersion を呼び出すことによって取得できます。各インターフェイスは、指定されたメソッドを呼び出すことによって取得できます。
インターフェイス | 呼び出すメソッド |
---|---|
次のインターフェイスは、ナレッジ オブジェクトのすべてのバージョンのコンポーネントを表します。各インターフェイスは、指定されたメソッドを呼び出すことによって取得できます。
インターフェイス | 呼び出すメソッド |
---|---|
ISyncKnowledge::FindClockVectorForItem または ISyncKnowledge::FindClockVectorForChangeUnit |
|
IProviderSyncServices::CreateReplicaKeyMap または ISyncKnowledge::GetReplicaKeyMap |
次のインターフェイスは、ナレッジ オブジェクトを調査および構築するために使用されます。各インターフェイスは、指定されたメカニズムによって取得できます。
インターフェイス | 使用するメカニズム |
---|---|
IReplicaKeyMap オブジェクトの QueryInterface メソッドに IID_IConstructReplicaKeyMap を渡します。 |
|
ISyncKnowledge2::GetInspector に IID_ICoreFragmentInspector を渡します。 |
|
IKnowledgeBuilder オブジェクトの QueryInterface メソッドに IID_IKnowledgeBuilder2 を渡します。 |
セッション インターフェイス
次のインターフェイスは、同期アプリケーションで、同期セッションを開始してそのセッションに関する情報を取得するために使用されます。各インターフェイスは、指定されたメカニズムを使用して取得できます。
インターフェイス | 使用するメカニズム |
---|---|
ISyncSession オブジェクトの QueryInterface メソッドに IID_ISyncSessionExtendedErrorInfo を渡します。 |
|
IProviderSyncServices2::CreateSyncSessionState を呼び出します。また、Sync Framework によって、IKnowledgeSyncProvider::BeginSession および IKnowledgeSyncProvider::EndSession に渡されます。 |
|
ISyncSessionState オブジェクトの QueryInterface メソッドに IID_ISyncSessionState2 を渡します。 |
|
ISyncSessionState オブジェクトの QueryInterface メソッドに IID_ISyncDataConversionControl を渡します。 |
アプリケーション コールバック データ インターフェイス
次のインターフェイスは、指定されたコールバック メソッドを使用して、Sync Framework によって同期アプリケーションに渡されます。
インターフェイス | コールバック メソッド |
---|---|
その他のインターフェイス
次のインターフェイスは、プロバイダーのコンバーターを登録するために使用されます。指定されたメソッドを呼び出すことによって取得できます。
インターフェイス | 呼び出すメソッド |
---|---|
同期プロバイダーによって実装されるインターフェイス
次のインターフェイスは、同期プロバイダーによって実装されます。
プロバイダー インターフェイス
次の各インターフェイスは、指定された IID を受け取ると、ISyncProvider オブジェクトの QueryInterface メソッドによって返される必要があります。これらのインターフェイスは、IApplicationSyncServices::CreateSyncSession を使用して、同期アプリケーションによって同期セッションに渡されます。
インターフェイス | IID |
---|---|
IID_IKnowledgeSyncProvider |
|
IID_ISyncProvider |
|
IID_IFilterTrackingProvider |
|
IID_IRequestFilteredSync |
|
IID_ISupportFilteredSync |
変更適用元のターゲット インターフェイス
次のインターフェイスは、同期の変更適用元を使用する同期先プロバイダーによって実装されます。実装された各インターフェイスは、指定された IID を受け取ると、ISynchronousNotifyingChangeApplierTarget オブジェクトの QueryInterface メソッドによって返される必要があります。これらのインターフェイスは、ISynchronousNotifyingChangeApplier::ApplyChanges などのメソッドを使用することによって、変更適用元のコンポーネントに渡されます。
インターフェイス | IID |
---|---|
IID_ISynchronousNotifyingChangeApplierTarget |
|
IID_ISynchronousNotifyingChangeApplierTarget2 |
|
IID_IFilteredReplicaNotifyingChangeApplierTarget |
|
IID_IFilterTrackingNotifyingChangeApplierTarget |
次のインターフェイスは、非同期の変更適用元を使用する同期先プロバイダーによって実装されます。このインターフェイスは、IAsynchronousNotifyingChangeApplier::ApplyChanges などのメソッドを使用することによって、変更適用元のコンポーネントに渡されます。
インターフェイス | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTarget |
データ取得元インターフェイス
次のインターフェイスは、変更適用元を使用する同期先プロバイダーによって実装されます。これらのインターフェイスは、指定されたメソッドなどを使用することによって、変更適用元のコンポーネントに渡されます。
インターフェイス | メソッド |
---|---|
その他のプロバイダー インターフェイス
次のインターフェイスは、プロバイダーでフィルター選択やデータ変換などのさまざまな機能を利用するために実装されます。インターフェイスは、指定されたメカニズムを使用することによって、Sync Framework に渡されます。
インターフェイス | メカニズム |
---|---|
IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins などのメソッドによって返されます。 |
|
IProviderConverterRegistration::RegisterProviderConverter に渡されます。 |
|
IID_ISupportLastWriteTime がデータ取得元オブジェクトの QueryInterface に渡されたときに返されます。通常、これは、ISynchronousDataRetriever オブジェクトです。 |
|
ISyncDataConversionControl::SetSourceDataConverter または ISyncDataConversionControl::SetDestinationDataConverter に渡されます。 |
|
IProviderCustomFilteredSyncServices::CreateCustomFilterInfo や IFilterKeyMap::AddFilter などのメソッドに渡されます。 |
|
IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap または IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap に渡されます。 |
同期アプリケーションによって実装されるインターフェイス
次のインターフェイスは、同期中に発生するイベントの通知を受信するために、同期アプリケーションによって実装されます。Sync Framework は、指定された IID を、ISyncSession::RegisterCallback に渡される ISyncCallback インターフェイスの QueryInterface メソッドに渡すことによって、これらのインターフェイスを取得します。
インターフェイス | IID |
---|---|
IID_ISyncCallback |
|
IID_ISyncCallback2 |
|
IID_ISyncConstraintCallback |
エラー コード
Sync Framework では、問題の報告にカスタム エラーを使用します。詳細については、「Sync Framework のエラー コード」を参照してください。
参照
概念
Sync Framework のアンマネージ API
Microsoft Sync Framework
カスタム プロバイダーの基礎
標準プロバイダーのメタデータの管理
標準のカスタム プロバイダーの実装
同期アプリケーションの実装