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 |
---|---|
|
作業的記憶體不足。 |
|
一或多個參數無效。 |
|
已發生未預期的錯誤。 |
|
提供的介面標識碼無效。 |
備註
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...)
在這些呼叫中,您會將不同的類別處理站實作傳遞至每個 pUnkCfLocal 和 pUnkCfInProc。 pUnkCfLocal 所指向的類別處理站會用來建立要內嵌在遠端進程中的物件,這是使用與用戶端相關聯之處理程式物件的一般案例。 不過,當伺服器同時建立物件並將它內嵌在本身時, pUnkCfInProc 會指向可建立支援處理程式介面之物件的類別物件。 本機類別可用來建立 物件,而進程內類別會建立內嵌協助程式,並將指標傳入 pCF 中第一個對象的類別處理站。
- 自定義進程內對象處理程式,在此情況下,DLL 會傳遞 pCF 中 IClassFactory 私用實作的指標,以建立內嵌協助程式。
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 版) |