OleInitialize 函式 (ole2.h)
初始化目前Apartment上的 COM連結庫、將並行模型識別為單線程Apartment (STA) ,並啟用以下一節中所述的其他功能。 應用程式必須先初始化 COM 連結庫,才能呼叫 CoGetMalloc 和記憶體配置函式以外的 COM 連結庫函式。
語法
HRESULT OleInitialize(
[in] LPVOID pvReserved
);
參數
[in] pvReserved
此參數是保留的,而且必須是 NULL。
傳回值
此函式會在成功時傳回S_OK。 其他可能的值包括下列專案。
傳回碼 | Description |
---|---|
|
COM 連結庫已在此 Apartment 上初始化。 |
|
您電腦上的 COMPOBJ.DLL 和 OLE2.DLL 版本彼此不相容。 |
|
先前呼叫 CoInitializeEx 會將這個 Apartment 的並行模型指定為多線程 Apartment (MTA) 。 這也表示發生從中性線程 Apartment 變更為單個線程 Apartment。 |
備註
使用下列功能的應用程式必須先呼叫 OleInitialize ,再呼叫 COM 連結庫中的任何其他函式:
- 剪貼簿
- 拖放
- 對象連結和內嵌 (OLE)
- 就地啟用
設定 Apartment 的並行模型之後,就無法變更。 在先前初始化為多線程的 Apartment 上呼叫 OleInitialize 將會失敗,並傳回RPC_E_CHANGED_MODE。
您必須在 Apartment 上初始化 COM 連結庫,才能呼叫 CoGetMalloc 以外的任何連結庫函式,以取得標準配置器的指標,以及記憶體配置函式。
一般而言,COM 連結庫只會在Apartment上初始化一次。 只要後續呼叫未嘗試變更 Apartment 的並行模型,就會成功,但會傳回S_FALSE。 若要正常關閉 COM 連結庫,每個成功呼叫 OleInitialize,包括傳回S_FALSE的專案,都必須透過 對應的 OleUninitialize 呼叫來平衡。
因為無法控制載入或卸除行程伺服器的順序,所以請勿從 DllMain 函式呼叫 OleInitialize 或 OleUninitialize。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | ole2.h |
程式庫 | Ole32.lib |
Dll | Ole32.dll |
API 集合 | ext-ms-win-com-ole32-l1-1-0 (於 Windows 8) |