ISynchronousDataRetriever::LoadChangeData
擷取變更的項目資料。
HRESULT LoadChangeData(
ILoadChangeContext * pLoadChangeContext,
IUnknown ** ppUnkData);
參數
- pLoadChangeContext
[in] 用來描述應該擷取資料之變更的中繼資料。
- ppUnkData
[out] 傳回 pLoadChangeContext 中所指定變更的項目資料。
傳回值
S_OK
提供者決定的錯誤碼
備註
來源提供者會決定由 ppUnkData 中所傳回物件實作的資料擷取介面。目的地提供者可以使用 ppUnkData 的 QueryInterface 方法取得這個介面。
範例
以下範例是 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;
}