Share via


OleCreateEmbeddingHelper 함수(ole2.h)

OLE 기본 개체 처리기의 조각으로 집계된 애플리케이션 제공 코드를 사용하여 OLE 포함 도우미 개체를 만듭니다. 이 도우미 개체는 호출자가 결정한 특정 컨텍스트 및 역할에서 만들고 사용할 수 있습니다.

구문

HRESULT OleCreateEmbeddingHelper(
  [in]  REFCLSID       clsid,
  [in]  LPUNKNOWN      pUnkOuter,
  [in]  DWORD          flags,
  [in]  LPCLASSFACTORY pCF,
  [in]  REFIID         riid,
  [out] LPVOID         *lplpObj
);

매개 변수

[in] clsid

도움이 될 클래스의 CLSID입니다.

[in] pUnkOuter

포함 도우미를 집계할 경우 외부 개체의 제어 IUnknown 인터페이스에 대한 포인터입니다. 집계하지 않는 경우는 드물지만 값은 NULL이어야 합니다.

[in] flags

포함 도우미에 대한 역할 및 만들기 컨텍스트를 지정하는 플래그가 포함된 DWORD입니다. 법적 값은 다음 주의 섹션을 참조하세요.

[in] pCF

함수가 보조 개체를 만드는 데 사용하는 클래스 개체의 IClassFactory 인터페이스에 대한 포인터입니다. 경우에 따라 이 값이 NULL일 수 있습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in] riid

호출자가 원하는 인터페이스의 식별자에 대한 참조입니다.

[out] lplpObj

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

반환 값

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

반환 코드 설명
E_OUTOFMEMORY
작업에 대한 메모리가 부족합니다.
E_INVALIDARG
하나 이상의 매개 변수가 잘못되었습니다.
E_UNEXPECTED
예기치 않은 오류가 발생했습니다.
E_NOINTERFACE
제공된 인터페이스 식별자가 잘못되었습니다.

설명

OleCreateEmbeddingHelper 함수는 기본 처리기에서 찾은 것과 동일한 인터페이스 구현을 지원하지만 처리기 개체보다 더 일반적으로 사용할 수 있는 추가 후크가 있는 개체를 만듭니다. 다음 두 호출은 동일한 결과를 생성합니다.

OleCreateEmbeddingHelper(clsid, pUnkOuter, EMBDHLP_INPROC_HANDLER | 
    EMBDHLP_CREATENOW, NULL, iid, ppvObj) 
 
OleCreateDefaultHandler(clsid, pUnkOuter, iid, ppvObj) 

포함 도우미는 집계할 수 있습니다. pUnkOuter 는 포함 도우미가 포함되는 집계의 제어 IUnknown 입니다. 다양한 역할의 개체를 지원하는 데 사용할 수 있는 OLE 기본 처리기의 새 instance 만드는 데 사용됩니다. 호출자는 IClassFactory 구현에 대한 포인터를 OleCreateEmbeddingHelper에 전달합니다. 그런 다음 이 개체와 기본 처리기가 집계되어 새 포함 도우미 개체를 만듭니다.

OleCreateEmbeddingHelper 함수는 일반적으로 다음 구현 중 하나를 지원하는 데 사용됩니다.

  • 컨테이너와 서버 모두로 사용되며 개체를 자체에 삽입할 수 있도록 지원하는 EXE 개체 애플리케이션입니다. 이 경우 CreateEmbeddingHelper 를 사용하면 개체가 일반적으로 처리기에서만 지원되는 인터페이스를 지원할 수 있습니다. 이를 위해 애플리케이션은 먼저 서로 다른 컨텍스트에 대해 CLSID를 등록해야 하며, 다음과 같이 CoRegisterClassObject 함수에 대한 두 개의 등록 호출을 수행합니다.
    CoRegisterClassObject(clsidMe, pUnkCfLocal, CLSCTX_LOCAL_SERVER, 
            REGCLS_MULTI_SEPARATE...) 
     
        CoRegisterClassObject(clsidMe, pUnkCfInProc, CLSCTX_INPROC_SERVER, 
        
            REGCLS_MULTI_SEPARATE...) 
    

    이러한 호출에서는 각 pUnkCfLocalpUnkCfInProc에 서로 다른 클래스 팩터리 구현을 전달합니다. pUnkCfLocal에서 가리키는 클래스 팩터리는 클라이언트와 연결된 처리기 개체를 사용하는 일반적인 경우인 원격 프로세스에 포함할 개체를 만드는 데 사용됩니다. 그러나 서버가 개체를 만들고 자체 내에 포함하는 경우 pUnkCfInProc 는 처리기 인터페이스를 지원하는 개체를 만들 수 있는 클래스 개체를 가리킵니다. 로컬 클래스는 개체를 만드는 데 사용되며 in-process 클래스는 pCF에서 첫 번째 개체의 클래스 팩터리에 대한 포인터를 전달하여 포함 도우미를 만듭니다.

  • 사용자 지정 in-process 개체 처리기입니다. 이 경우 DLL은 pCF에서 IClassFactory의 프라이빗 구현에 대한 포인터를 전달하여 포함 도우미를 만듭니다.
flags 매개 변수는 포함 도우미를 사용하는 방법과 포함 도우미가 초기화되는 방법과 시기를 나타냅니다. 플래그의 값은 다음 표의 OR-ing 값으로 가져옵니다.
flags 매개 변수 값 목적
EMBDHLP_INPROC_HANDLER DLL 개체 애플리케이션과 함께 사용할 수 있는 포함 도우미를 만듭니다. 특히 도우미는 기본 개체 처리기의 캐싱 기능을 노출합니다.
EMBDHLP_INPROC_SERVER In-Process 서버의 일부로 사용할 포함 도우미를 만듭니다. pCFNULL일 수 없습니다.
EMBDHLP_CREATENOW pCF를 사용하여 보조 개체를 즉시 만듭니다. pCF가 NULL이면 표준 프록시 관리자가 사용됩니다.
EMBDHLP_DELAYCREATE 보조 개체가 필요할 때까지(도우미가 실행 중 상태로 전환될 때) 속도 및 메모리 사용을 향상시키기 위해 생성을 지연시킵니다. pCFNULL이 아니어야 합니다. EMBDHLP_INPROC_HANDLER 플래그는 이 플래그와 함께 사용할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 ole2.h
라이브러리 Ole32.lib
DLL Ole32.dll
API 세트 ext-ms-win-com-ole32-l1-1-5(Windows 10 버전 10.0.15063에 도입됨)

추가 정보

OleCreateDefaultHandler