IProviderSyncServices::CreateReplicaKeyMap

指定したレプリカの IReplicaKeyMap を作成します。

HRESULT CreateReplicaKeyMap( 
  const BYTE *pbReplicaId,
  IReplicaKeyMap **ppReplicaKeyMap);

パラメーター

  • pbReplicaId
    [in] レプリカ キー マップを所有するレプリカの ID。
  • ppReplicaKeyMap
    [out] 新しく作成されたレプリカ キー マップ オブジェクトを返します。

戻り値

  • S_OK

  • E_OUTOFMEMORY

  • E_POINTER

  • SYNC_E_INVALID_OPERATION (このオブジェクトが初期化されていない場合)

  • SYNC_E_ID_FORMAT_MISMATCH (pbReplicaId によって指定された ID が、このオブジェクトの初期化に使用される ID 形式スキーマによって指定された形式と一致しない場合)

解説

レプリカ キー マップ オブジェクトは、レプリカ ID と 4 バイトのキーの対照表であり、同期ナレッジの作成に不可欠です。同期メタデータではレプリカ ID が繰り返し必要になるため、Sync Framework はレプリカ ID と 4 バイト キーとの対照表を利用して、同期メタデータ全体でレプリカ ID の代わりにレプリカ キーを使用します。

IProviderSyncServices を使用してオブジェクトを作成する例を次に示します。この例では、オブジェクトを後で使用するために保存します。

IProviderSyncServices* pProvSvc;
hr = GetProviderSyncServices(&c_idParams, &pProvSvc);
if (SUCCEEDED(hr))
{
    IReplicaKeyMap* pReplicaKeyMap = NULL;
    hr = pProvSvc->CreateReplicaKeyMap((BYTE*)&guidReplicaID, &pReplicaKeyMap);
    if (SUCCEEDED(hr))
    {
        hr = SetReplicaKeyMap(pReplicaKeyMap);
        if (SUCCEEDED(hr))
        {
            ISyncKnowledge* pKnowledge = NULL;
            hr = pProvSvc->CreateSyncKnowledge(0, pReplicaKeyMap, &pKnowledge);
            if (SUCCEEDED(hr))
            {
                hr = SetKnowledge(pKnowledge);
                if (SUCCEEDED(hr))
                {
                    IForgottenKnowledge* pForgottenKnowledge = NULL;
                    hr = pProvSvc->CreateForgottenKnowledge(pReplicaKeyMap, &pForgottenKnowledge);
                    if (SUCCEEDED(hr))
                    {
                        hr = SetForgottenKnowledge(pForgottenKnowledge);

                        pForgottenKnowledge->Release();
                    }
                }

                pKnowledge->Release();
            }
        }

        pReplicaKeyMap->Release();
    }
    pProvSvc->Release();
}

参照

リファレンス

IProviderSyncServices インターフェイス