Freigeben über


ISynchronousDataRetriever::LoadChangeData-Methode (winsync.h)

Ruft Elementdaten für eine Änderung ab.

Syntax

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

Parameter

[in] pLoadChangeContext

Metadaten, die die Änderung beschreiben, für die Daten abgerufen werden sollen.

[out] ppUnkData

Gibt die Elementdaten für die in pLoadChangeContext angegebene Änderung zurück.

Rückgabewert

Zu den möglichen Rückgabecodes gehören die werte in der folgenden Tabelle, sind aber nicht darauf beschränkt.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich ausgeführt.
Vom Anbieter bestimmte Fehlercodes.

Hinweise

Der Quellanbieter bestimmt die Datenabrufschnittstelle, die von dem objekt implementiert wird, das in ppUnkData zurückgegeben wird. Der Zielanbieter kann diese Schnittstelle mithilfe der QueryInterface-Methode von ppUnkData abrufen.

Beispiele

Das folgende Beispiel ist eine Implementierung von LoadChangeData , die die angegebene Änderung in einem benutzerdefinierten Datenspeicher findet und eine Kopie davon zurückgibt.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winsync.h

Weitere Informationen

ILoadChangeContext-Schnittstelle

ISynchronousDataRetriever-Schnittstelle