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