IGlobalOptions 介面 (objidlbase.h)
設定和查詢元件物件模型 (COM) 運行時間的全域屬性。
繼承
IGlobalOptions 介面繼承自 IUnknown 介面。 IGlobalOptions 也有下列類型的成員:
方法
IGlobalOptions 介面具有這些方法。
IGlobalOptions::Query IGlobalOptions::Query (objidlbase.h) 方法會查詢 COM 運行時間的指定全域屬性。 |
IGlobalOptions::Set IGlobalOptions::Set (objidlbase.h) 方法會設定 COM 運行時間的指定全域屬性。 |
備註
您可以使用這個介面來設定及查詢 COM 執行時間的下列全域屬性。
屬性 | 值 |
---|---|
COMGLB_APPID | 進程的AppID。 這是 Windows XP 上唯一支援的屬性。 |
COMGLB_EXCEPTION_HANDLING |
COMGLB_EXCEPTION_HANDLING屬性的可能值為:
注意 即使停用 COM 運行時間例外狀況處理,如果處理程式中有另一個處理例外狀況的應用層級例外狀況處理程式,例外狀況可能不會傳播至 WER。
|
COMGLB_RPC_THREADPOOL_SETTING |
Set 方法中COMGLB_RPC_THREADPOOL_SETTING屬性的可能值為:
COMGLB_RPC_THREADPOOL_SETTING 屬性可用來變更 RPC 線程集區行為。 變更預設行為會產生效能負面影響,因為這會導致 RPC 使用額外的線程。 因此,變更此設定時應該小心。 建議您只基於應用程式相容性考慮而變更此設定。
注意 這個屬性必須在程式中初始化 COM 之後立即設定。 如果在執行會導致 COM 初始化 RPC (通道的任何作業之後設定此屬性,例如封送處理或取消封送處理或取消封送處理物件參考 ) ,Set 方法將會失敗。
|
COMGLB_RO_SETTINGS |
COMGLB_RO_SETTINGS屬性的可能值為:
|
COMGLB_UNMARSHALING_POLICY |
COMGLB_UNMARSHALING_POLICY屬性的可能值為:
|
對於偵測損毀和其他可能會在執行輸入 COM 呼叫時產生的例外狀況的應用程式而言很重要,例如在本機伺服器上或執行 IDropTarget::D rop 方法時呼叫,若要將COMGLB_EXCEPTION_HANDLING設定為COMGLB_EXCEPTION_DONOT_HANDLE以停用攔截例外狀況的 COM 行為。 無法這樣做可能會導致進程狀態損毀,例如擲回這些例外狀況時所保留的鎖定,而且進程可能會進入不一致的狀態。
所有這類應用程式都應該在啟動時執行此程序代碼。
IGlobalOptions *pGlobalOptions;
hr = CoCreateInstance(CLSID_GlobalOptions, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGlobalOptions));
if (SUCCEEDED(hr))
{
hr = pGlobalOptions->Set(COMGLB_EXCEPTION_HANDLING, COMGLB_EXCEPTION_DONOT_HANDLE);
pGlobalOptions->Release();
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | objidlbase.h (包含 ObjIdl.h) |