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();
}