アンマネージ同期アプリケーションを作成する方法
このトピックでは、Microsoft Sync Framework を使って同期セッションを作成し、同期元と同期先のプロバイダに接続するアプリケーションを、C++ などのアンマネージ言語で作成する方法について説明します。
このトピックは、C++ および COM の概念について基本的な知識がある方を対象としています。
このトピックの例では、次に示す Sync Framework のコンポーネントを中心に説明します。
同期アプリケーションについて
同期アプリケーションは、同期セッションを作成して、2 つの同期プロバイダに接続し、そのセッションを使って同期を開始するソフトウェア コンポーネントです。同期中には Sync Framework をホストします。
同期アプリケーションのロールの詳細については、「同期アプリケーション」を参照してください。
ビルド要件
Synchronization.h : Sync Framework コンポーネントの宣言。
#include <synchronization.h>
Synchronizationerrors.h : カスタム エラー コード。
#include <synchronizationerrors.h>
Synchronization.lib : インポート ライブラリ。
例
このトピックのコード例では、同期セッションを作成して同期元と同期先のプロバイダで初期化し、そのセッションを開始する方法を示します。セッションの統計情報をユーザーに提供する方法も紹介しています。
アプリケーションは、その種類に応じた最適な方法でプロバイダを取得できる点に注意してください。この例では、既に同期元レプリカと同期先レプリカを表す 2 つの ISyncProvider インターフェイス インターフェイスがアプリケーションに存在することを前提としています。
同期セッションの作成と開始
この例では、CoCreateInstance
を使用して、IApplicationSyncServices オブジェクトを作成します。次に、このオブジェクトを使用してセッション オブジェクトを作成し、初期化します。セッションが開始され、同期が完了すると、セッションの統計情報がメッセージ ボックスに表示されます。
HRESULT Synchronize(ISyncProvider* pProvSrc, ISyncProvider* pProvDest)
{
HRESULT hr = E_UNEXPECTED;
IApplicationSyncServices* pSvc = NULL;
hr = CoCreateInstance(CLSID_SyncServices, NULL, CLSCTX_INPROC_SERVER,
IID_IApplicationSyncServices, (void**)&pSvc);
if (SUCCEEDED(hr))
{
ISyncSession* pSession = NULL;
hr = pSvc->CreateSyncSession(pProvDest, pProvSrc, &pSession);
if (SUCCEEDED(hr))
{
SYNC_SESSION_STATISTICS syncStats;
// Arbitrarily choose "destination wins" conflict resolution.
hr = pSession->Start(CRP_DESTINATION_PROVIDER_WINS, &syncStats);
if (SUCCEEDED(hr))
{
// Display the session statistics to the user.
CString strMsg;
strMsg.Format(L"%d changes succeeded.\n%d changes failed.", syncStats.dwChangesApplied,
syncStats.dwChangesFailed);
MessageBox(NULL, strMsg.GetString(), L"Synchronization Statistics", MB_ICONINFORMATION);
}
pSession->Release();
}
pSvc->Release();
}
return hr;
}
次の手順
同期アプリケーションの作成はこれで終了です。次の手順は同期プロバイダの作成です。詳細については、「アンマネージ同期プロバイダを作成する方法」を参照してください。また、アプリケーションを登録することによって、セッション中に通知を受信できるようにアプリケーションを拡張することもできます。詳細については、「同期イベントへの応答」を参照してください。
参照
リファレンス
ISyncSession インターフェイス
SYNC_SESSION_STATISTICS 構造体