アンマネージ同期アプリケーションを作成する方法

このトピックでは、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 構造体

概念

同期アプリケーションの実装