ISynchronousDataRetriever::LoadChangeData
Recupera datos de elemento para un cambio.
HRESULT LoadChangeData(
ILoadChangeContext * pLoadChangeContext,
IUnknown ** ppUnkData);
Parámetros
- pLoadChangeContext
[in] Metadatos que describen el cambio para el que se deben recuperar datos.
- ppUnkData
[out] Devuelve los datos de elemento para el cambio especificado en pLoadChangeContext.
Valor devuelto
S_OK
Códigos de error determinados por el proveedor
Notas
El proveedor de origen determina la interfaz de recuperación de datos que implementa el objeto que se devuelve en ppUnkData. El proveedor de destino puede adquirir esta interfaz usando el método QueryInterface de ppUnkData.
Ejemplo
En el ejemplo siguiente se muestra una implementación de LoadChangeData
que busca el cambio especificado en un almacén de datos personalizado y devuelve una copia del mismo.
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;
}