ISynchronousDataRetriever::LoadChangeData
Recupera dati dell'elemento per una modifica.
HRESULT LoadChangeData(
ILoadChangeContext * pLoadChangeContext,
IUnknown ** ppUnkData);
Parametri
- pLoadChangeContext
[in] Metadati che descrivono la modifica per la quale devono essere recuperati i dati.
- ppUnkData
[out] Restituisce i dati dell'elemento per la modifica specificata in pLoadChangeContext.
Valore restituito
S_OK
Codici di errore determinati dal provider
Osservazioni
Il provider di origine determina l'interfaccia di recupero dei dati implementata dall'oggetto restituito in ppUnkData. Il provider di destinazione può acquisire questa interfaccia tramite il metodo QueryInterface di ppUnkData.
Esempio
L'esempio seguente è un'implementazione di LoadChangeData
che consente di trovare la modifica specificata in un archivio dati personalizzato e ne restituisce una copia.
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;
}