다음을 통해 공유


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

참고 항목

참조

ISynchronousDataRetriever 인터페이스