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。 其他可能的值包括下列專案。

傳回碼 Description
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 預設處理程式的新實例,可用來支援各種角色中的物件。 呼叫端會將指標傳遞給其 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...) 
    

    在這些呼叫中,您會將不同的類別處理站實作傳遞至每個 pUnkCfLocalpUnkCfInProcpUnkCfLocal 所指向的類別處理站會用來建立要內嵌在遠端進程中的物件,這是使用與用戶端相關聯之處理程式物件的一般案例。 不過,當伺服器同時建立物件並將它內嵌在本身時, pUnkCfInProc 會指向可建立支援處理程式介面之物件的類別物件。 本機類別可用來建立 物件,而進程內類別會建立內嵌協助程式,並將指標傳入 pCF 中第一個對象的類別處理站。

  • 自定義進程內對象處理程式,在此情況下,DLL 會傳遞 pCFIClassFactory 私用實作的指標,以建立內嵌協助程式。
flags 參數會指出如何使用內嵌協助程式,以及初始化內嵌協助程式的方式和時機。 旗標的值是透過 OR-ing 一起從下表取得的值。
flags 參數的值 用途
EMBDHLP_INPROC_HANDLER 建立可搭配 DLL 物件應用程式使用的內嵌協助程式;具體而言,協助程式會公開預設對象處理程式的快取功能。
EMBDHLP_INPROC_SERVER 建立內嵌協助程式,做為同進程伺服器的一部分。 pCF 不可以是 NULL
EMBDHLP_CREATENOW 立即使用 pCF 建立次要物件;如果 pCF 為 NULL,則會使用標準 Proxy 管理員。
EMBDHLP_DELAYCREATE 延遲建立次要物件,直到協助程式進入執行狀態) 以增強速度與記憶體使用時 (。 pCF 不得為 NULL。 EMBDHLP_INPROC_HANDLER旗標不能與這個旗標搭配使用。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 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