ISynchronousDataRetriever::LoadChangeData
Récupère des données d'élément pour une modification.
Syntaxe
HRESULT LoadChangeData(
ILoadChangeContext * pLoadChangeContext,
IUnknown ** ppUnkData);
Paramètres
pLoadChangeContext
[in] Métadonnées qui décrivent la modification pour laquelle les données doivent être récupérées.ppUnkData
[out] Retourne les données d'élément pour la modification spécifiée dans pLoadChangeContext.
Valeur de retour
S_OK
Codes d'erreur déterminés par le fournisseur
Notes
Le fournisseur de source détermine l'interface de récupération des données implémentée par l'objet retourné dans ppUnkData. Le fournisseur de destination peut acquérir cette interface en utilisant la méthode QueryInterface de ppUnkData.
Exemple
L'exemple suivant est une implémentation de LoadChangeData qui recherche la modification spécifiée dans un magasin de données personnalisé et en retourne une copie.
STDMETHODIMP CItemStore::LoadChangeData(
ILoadChangeContext * pLoadChangeContext,
IUnknown ** ppUnkData)
{
HRESULT hr = E_UNEXPECTED;
if (NULL == pLoadChangeContext || NULL == ppUnkData)
{
hr = E_POINTER;
}
else
{
// Find the item in the data store, clone it, and return its IUnknown interface.
ISyncChange* pChange = NULL;
hr = pLoadChangeContext->GetSyncChange(&pChange);
if (SUCCEEDED(hr))
{
SYNC_GID gidItem;
DWORD cbID = sizeof(gidItem);
hr = pChange->GetRootItemId((BYTE*)&gidItem, &cbID);
if (SUCCEEDED(hr))
{
IXMLDOMNode* pNodeItem = NULL;
hr = FindItem(&gidItem, &pNodeItem);
if (SUCCEEDED(hr))
{
IXMLDOMNode* pNodeClone = NULL;
hr = pNodeItem->cloneNode(TRUE, &pNodeClone);
if (SUCCEEDED(hr))
{
hr = pNodeClone->QueryInterface(IID_IUnknown, (void**)ppUnkData);
pNodeClone->Release();
}
pNodeItem->Release();
}
}
pChange->Release();
}
}
return hr;
}