Поделиться через


Метод ISynchronousDataRetriever::LoadChangeData (winsync.h)

Извлекает данные элемента для изменения.

Синтаксис

HRESULT LoadChangeData(
  [in]  ILoadChangeContext *pLoadChangeContext,
  [out] IUnknown           **ppUnkData
);

Параметры

[in] pLoadChangeContext

Метаданные, описывающие изменение, для которого необходимо извлечь данные.

[out] ppUnkData

Возвращает данные элемента для изменения, указанного в pLoadChangeContext.

Возвращаемое значение

Возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.

Код возврата Описание
S_OK
Метод выполнен успешно.
Коды ошибок, определяемые поставщиком.

Комментарии

Поставщик источника определяет интерфейс извлечения данных, реализованный объектом, возвращаемым в ppUnkData. Поставщик назначения может получить этот интерфейс с помощью метода QueryInterfaceppUnkData.

Примеры

В следующем примере показана реализация LoadChangeData , которая находит указанное изменение в пользовательском хранилище данных и возвращает его копию.

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

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header winsync.h

См. также раздел

Интерфейс ILoadChangeContext

Интерфейс ISynchronousDataRetriever