OleInitialize 函式 (ole2.h)

初始化目前Apartment上的 COM連結庫、將並行模型識別為單線程Apartment (STA) ,並啟用以下一節中所述的其他功能。 應用程式必須先初始化 COM 連結庫,才能呼叫 CoGetMalloc 和記憶體配置函式以外的 COM 連結庫函式。

語法

HRESULT OleInitialize(
  [in] LPVOID pvReserved
);

參數

[in] pvReserved

此參數是保留的,而且必須是 NULL

傳回值

此函式會在成功時傳回S_OK。 其他可能的值包括下列專案。

傳回碼 Description
S_FALSE
COM 連結庫已在此 Apartment 上初始化。
OLE_E_WRONGCOMPOBJ
您電腦上的 COMPOBJ.DLL 和 OLE2.DLL 版本彼此不相容。
RPC_E_CHANGED_MODE
先前呼叫 CoInitializeEx 會將這個 Apartment 的並行模型指定為多線程 Apartment (MTA) 。 這也表示發生從中性線程 Apartment 變更為單個線程 Apartment。

備註

使用下列功能的應用程式必須先呼叫 OleInitialize ,再呼叫 COM 連結庫中的任何其他函式:

  • 剪貼簿
  • 拖放
  • 對象連結和內嵌 (OLE)
  • 就地啟用
OleInitialize 會在內部呼叫 CoInitializeEx ,以初始化目前 Apartment 上的 COM 連結庫。 因為 OLE 作業不是安全線程, 所以 OleInitialize 會將並行模型指定為單個線程 Apartment。

設定 Apartment 的並行模型之後,就無法變更。 在先前初始化為多線程的 Apartment 上呼叫 OleInitialize 將會失敗,並傳回RPC_E_CHANGED_MODE。

您必須在 Apartment 上初始化 COM 連結庫,才能呼叫 CoGetMalloc 以外的任何連結庫函式,以取得標準配置器的指標,以及記憶體配置函式。

一般而言,COM 連結庫只會在Apartment上初始化一次。 只要後續呼叫未嘗試變更 Apartment 的並行模型,就會成功,但會傳回S_FALSE。 若要正常關閉 COM 連結庫,每個成功呼叫 OleInitialize,包括傳回S_FALSE的專案,都必須透過 對應的 OleUninitialize 呼叫來平衡。

因為無法控制載入或卸除行程伺服器的順序,所以請勿從 DllMain 函式呼叫 OleInitializeOleUninitialize

規格需求

需求
最低支援的用戶端 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)

另請參閱

CoInitializeEx

OleInitialize

OleUninitialize