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。

  • 如果 pbReplicaId 指定的 ID 的格式不是由用于初始化此对象的 ID 格式架构指定的格式,则返回值为 SYNC_E_ID_FORMAT_MISMATCH。

备注

副本键映射对象将在副本 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 接口