ILoadChangeContext::GetSyncChange
Ruft das Änderungselement ab, für das die Änderungsdaten aus dem Elementspeicher abgerufen werden sollen.
HRESULT GetSyncChange(
ISyncChange ** ppSyncChange);
Parameter
- ppSyncChange
[out] Gibt das Änderungselement zurück, für das die Änderungsdaten aus dem Elementspeicher abgerufen werden sollen.
Rückgabewert
S_OK
E_POINTER
SYNC_E_INTERNAL_ERROR, wenn ein interner Fehler auftritt.
Beispiel
Im folgenden Beispiel wird eine Implementierung von ISynchronousDataRetriever::LoadChangeData bereitgestellt, wobei GetSyncChange
verwendet wird, um die angegebene Änderung zu laden. Im Beispiel wird in einem benutzerdefinierten Datenspeicher nach einer Änderung gesucht und eine Kopie zurückgegeben.
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;
}