coGetDefaultCoNtext 函式 (combaseapi.h)
擷取指定 Apartment 之預設內容的參考。
語法
HRESULT CoGetDefaultContext(
[in] APTTYPE aptType,
[in] REFIID riid,
[out] void **ppv
);
參數
[in] aptType
所要求之預設內容的 Apartment 類型。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
呼叫端的 Apartment。 |
|
目前進程的多執行緒 Apartment。 |
|
目前進程的中性 Apartment。 |
|
目前進程的主要單一執行緒 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指標。
傳回值
這個方法可以傳回下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成命令。 |
|
其中一個參數無效。 |
|
呼叫端不在初始化的 Apartment 中。 |
|
物件內容不支援 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 |