다음을 통해 공유


OleCreateFromDataEx 함수(ole2.h)

OleCreateFromData에서 지원하는 단일 형식 대신 여러 형식의 프레젠테이션 또는 데이터를 캐싱해야 하는 컨테이너의 개체를 보다 효율적으로 인스턴스화할 수 있도록 지원하여 OleCreateFromData 기능을 확장합니다.

구문

HRESULT OleCreateFromDataEx(
  [in]  LPDATAOBJECT    pSrcDataObj,
  [in]  REFIID          riid,
  [in]  DWORD           dwFlags,
  [in]  DWORD           renderopt,
  [in]  ULONG           cFormats,
  [in]  DWORD           *rgAdvf,
  [in]  LPFORMATETC     rgFormatEtc,
  [in]  IAdviseSink     *lpAdviseSink,
  [out] DWORD           *rgdwConnection,
  [in]  LPOLECLIENTSITE pClientSite,
  [in]  LPSTORAGE       pStg,
  [out] LPVOID          *ppvObj
);

매개 변수

[in] pSrcDataObj

새 개체를 만드는 데 사용되는 새 데이터를 포함하는 데이터 전송 개체에 대한 포인터입니다. ( OleCreateFromData 참조).

[in] riid

반환할 개체 인터페이스의 식별자에 대한 참조입니다.

[in] dwFlags

이 매개 변수는 0 또는 OLECREATE_LEAVERUNNING(0x00000001)일 수 있습니다.

[in] renderopt

OLERENDER 열거형에서 가져온 값입니다.

[in] cFormats

renderopt가 OLERENDER_FORMAT 경우 는 rgFormatEtc 배열의 FORMATETC 구조체 수를 나타내며, 이는 하나 이상이어야 합니다. 다른 모든 경우에서 이 매개 변수는 0이어야 합니다.

[in] rgAdvf

renderopt가 OLERENDER_FORMAT 경우 각각 ADVF 열거형의 값 조합인 DWORD 요소 배열을 가리킵니다. 이 배열의 각 요소는 pAdviseSinkNULL인지 아니면 NULL이 아닌지에 따라 IOleCache::Cache 또는 IDataObject::D Advise 호출에 대한 advf 매개 변수로 전달됩니다(아래 참조). 다른 모든 경우에서 이 매개 변수는 NULL이어야 합니다.

[in] rgFormatEtc

renderopt가 OLERENDER_FORMAT 경우 FORMATETC 구조체의 배열을 가리킵니다. pAdviseSinkNULL이면 이 배열의 각 요소가 개체의 IOleCache::Cache 호출에 대한 pFormatEtc 매개 변수로 전달됩니다. 이렇게 하면 개체의 In-Process 처리기(일반적으로 기본 처리기)에서 관리하는 데이터 및 프레젠테이션 캐시를 프레젠테이션 또는 기타 캐시 가능한 데이터로 채웁니다. pAdviseSinkNULL이 아닌 경우 이 배열의 각 요소는 iDataObject::D Advise 호출에 대한 pFormatEtc 매개 변수로 전달됩니다. 이렇게 하면 호출자(일반적으로 OLE 컨테이너)가 개체에서 받은 데이터의 자체 캐싱 또는 처리를 수행할 수 있습니다.

[in] lpAdviseSink

renderopt가 OLERENDER_FORMAT 경우 는 사용자 지정 캐싱 또는 데이터 조언 처리를 나타내는 유효한 IAdviseSink 포인터이거나 데이터 형식의 기본 캐싱을 나타내는 NULL일 수 있습니다.

[out] rgdwConnection

IDataObject::D Advise를 사용하여 각 권고 연결에 대해 IAdviseSink 인터페이스가 등록될 때 반환되는 dwConnection 값의 배열을 반환할 위치이거나 반환된 권고 연결이 필요하지 않은 경우 NULL입니다. pAdviseSinkNULL인 경우 이 매개 변수는 NULL이어야 합니다.

[in] pClientSite

개체가 컨테이너에서 서비스를 요청할 기본 인터페이스에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다. 이 경우 IOleObject::SetClientSite를 사용하여 가능한 한 빨리 클라이언트 사이트를 설정하는 것은 호출자의 책임입니다.

[in] pStg

개체 및 개체에 대해 설정된 모든 기본 데이터 또는 프레젠테이션 캐싱에 사용할 스토리지에 대한 포인터입니다.

[out] ppvObj

riid에서 요청된 인터페이스 포인터를 수신하는 출력 포인터 변수의 주소입니다. 반환에 성공하면 *ppvObj 는 새로 만든 개체에 대해 요청된 인터페이스 포인터를 포함합니다.

반환 값

이 함수는 성공에 대한 S_OK 반환합니다. 다른 가능한 값은 다음과 같습니다.

반환 코드 설명
E_NOINTERFACE
제공된 인터페이스 식별자가 잘못되었습니다.
E_INVALIDARG
하나 이상의 매개 변수가 잘못되었습니다.

설명

OleCreateFromData에 대한 다음 호출은 다음과 같습니다.

OleCreateFromData(lpszFileName, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj);

OleCreateFromDataEx에 대한 다음 호출과 동일합니다.

DWORD    advf = ADVF_PRIMEFIRST;
    OleCreateFromFileEx(rclsid, lpszFileName, riid, renderopt, 1, &advf, pFormatEtc, NULL, pClientSite, pStg, ppvObj);

기존 인스턴스화 함수(OleCreate, OleCreateFromFile, OleCreateFromData, OleCreateLink, OleCreateLinkToFileOleCreateLinkFromData)는 인스턴스화 중에 기본 캐시 위치(전달된 IStorage의 '\001OlePresXXX' 스트림 내)에 단일 프레젠테이션 또는 데이터 형식 캐시만 만듭니다. 또한 개체가 다음에 실행 중 상태로 들어갈 때 이러한 캐시를 만들어야 합니다. 대부분의 애플리케이션은 두 개 이상의 프레젠테이션(화면 및 프린터)을 캐싱해야 하며 처리기와 다른 형식 또는 위치로 데이터를 캐싱해야 할 수 있으므로 애플리케이션은 개체를 만드는 동안 데이터 캐시를 만들기 위해 일반적으로 개체 서버를 여러 번 시작하고 종료해야 합니다(예: 개체 삽입, 파일에서 개체 삽입 및 붙여넣기).

이러한 생성 함수의 확장 버전은 이 문제를 해결합니다. OleCreateEx, OleCreateFromFileEx, OleCreateFromDataEx, OleCreateLinkEx, OleCreateLinkToFileExOleCreateLinkFromDataEx에는 추가 옵션을 나타내는 dwFlags, ADVF 열거형에서 캐시할 형식 수를 나타내는 cFormats, rgAdvf, 캐시할 각 형식에 대한 조언 플래그를 지정하는 새로운 매개 변수가 포함되어 있습니다. pAdviseSink 프레젠테이션(기본 처리기) 또는 데이터(기본 처리기가 아닌) 캐싱이 필요한지 여부를 나타내려면 IDataObject::D Advise 쿠키를 반환하는 rgdwConnection과 단일 형식이 아닌 형식 배열인 rgFormatEtc입니다.

개체의 처리기에서 여러 프레젠테이션을 대신 캐시해야 하는 컨테이너는 단순히 이러한 함수를 호출하고 cFormats의 형식 수, rgAdvf의 각 형식에 대한 ADVF 플래그 및 rgFormatEtc의 형식 집합을 지정할 수 있습니다. 이러한 컨테이너는 pAdviseSink에 대해 NULL을 전달합니다.

모든 자체 데이터 또는 프레젠테이션 캐싱을 수행하는 컨테이너는 동일한 단계를 수행하지만 NULL이 아닌 pAdviseSink를 전달합니다. IAdviseSink::OnDataChange 중에 개체 또는 데이터의 자체 캐싱 또는 조작을 수행합니다. 일반적으로 이러한 컨테이너는 ADVF_NODATA 대한 권고 연결을 설정하지 않습니다.

이러한 새 함수는 OLE 복합 문서에 대한 것입니다. 애플리케이션은 이러한 함수를 사용하여 현재 함수에 필요한 반복된 시작 및 초기화 단계를 방지할 수 있습니다. 기본 데이터 및 프레젠테이션 캐싱을 사용하는 OLE 복합 문서 컨테이너 애플리케이션과 기본 IDataObject::D Advise 지원에서 자체 캐싱 및 데이터 전송을 제공하는 애플리케이션을 대상으로 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 ole2.h
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

ADVF

Formatetc

IAdviseSink::OnDataChange

IDataObject::D Advise

IOleCache::Cache

IOleObject::SetClientSite

IStorage

OLERENDER

OleCreate

OleCreateFromData