共用方式為


coGetDefaultCoNtext 函式 (combaseapi.h)

擷取指定 Apartment 之預設內容的參考。

語法

HRESULT CoGetDefaultContext(
  [in]  APTTYPE aptType,
  [in]  REFIID  riid,
  [out] void    **ppv
);

參數

[in] aptType

所要求之預設內容的 Apartment 類型。 此參數可以是下列其中一個值。

意義
APTTYPE_CURRENT
-1
呼叫端的 Apartment。
APTTYPE_MTA
1
目前進程的多執行緒 Apartment。
APTTYPE_NA
2
目前進程的中性 Apartment。
APTTYPE_MAINSTA
3
目前進程的主要單一執行緒 Apartment。
 

不支援 APTTYPE 值APTTYPE_STA (0) 。 進程可以包含多個單一執行緒 Apartment,每個 Apartment 都有自己的內容,因此 CoGetDefaultCoNtext 無法判斷感興趣的 STA。 因此,如果指定APTTYPE_STA,此函式會傳回E_INVALIDARG。

[in] riid

介面識別碼 (在預設內容上要求的介面) IID。 呼叫端通常會要求IID_IObjectCoNtext。 預設內容不支援所有一般物件內容介面。

[out] ppv

預設內容上 riid 所指定介面的參考。 如果物件的元件未設定, (也就是說,物件的元件尚未匯入 COM+ 應用程式) ,或者如果從建構函式或IUnknown方法呼叫CoGetDefaultCoNtext函式,則此參數會設定為Null指標。

傳回值

這個方法可以傳回下列值。

傳回碼 描述
S_OK
已成功完成命令。
E_INVALIDARG
其中一個參數無效。
CO_E_NOTINITIALIZED
呼叫端不在初始化的 Apartment 中。
E_NOINTERFACE
物件內容不支援 riid指定的介面。

備註

每個 COM Apartment 都有稱為預設內容的特殊內容。 預設內容與 Apartment 中所有其他非預設內容不同,因為它不提供執行時間服務。 它不支援所有一般物件內容介面。

非設定 COM 元件的實例也會使用預設內容, (亦即,當元件不是 COM+ 應用程式的一部分) 時,從不支援其執行緒模型的 Apartment 建立它們時。 換句話說,如果 COM 物件建立非設定元件的實例,而且因為其執行緒模型而無法將新物件新增至其建立者的內容,則新物件會改為新增至支援其執行緒模型之 Apartment 的預設內容。

物件不應該將 IObjectCoNtext 參考傳遞至另一個物件。 如果您將 IObjectCoNtext 參考傳遞給另一個物件,它不再是有效的參考。

當物件取得 IObjectCoNtext的參考時,它必須在完成 IObjectCoNtext 物件時釋放該物件。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 combaseapi.h
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

COM+ 內容和執行緒模型