ISynchronousDataRetriever::LoadChangeData
Récupère des données d'élément pour une modification.
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 une banque de données personnalisée 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;
}