共用方式為


使用系統提供的 Surrogate

若要為 DLL 伺服器使用系統提供的 Surrogate,請在登錄中為 DllSurrogate 值註冊指定空字串或 NULLDLL。 當指定 DLL 伺服器的啟用要求來到 COM 時,COM 會在內部指定啟動命令行上的 CLSID 來啟動預設代理程式和要求的 DLL,以避免個別呼叫。 (如需在代理程式中執行多個 DLL 伺服器的詳細資訊,請參閱 Surrogate Sharing.)

代理程式的預設實作是混合線程模型樣式虛擬 COM 伺服器。 將多個 DLL 伺服器載入單一代理程式時,此程式可確保每個 DLL 伺服器都會使用該伺服器登錄中指定的線程模型具現化。 所有載入的自由線程伺服器都會在多線程 Apartment 中一起存留,而每個 Apartment 線程伺服器都會位於單個線程 Apartment 中。 如果 DLL 伺服器支援這兩個線程模型,COM 會選擇多線程。

這個代理程式會寫入,讓 COM 同時處理 DLL 伺服器的卸載和代理程序的終止。 進程存留期主要會透過代理中的封送處理物件數目來通知,該代理程式可作為對進程外部相依性的啟發學習測量。雖然意圖是表示外部相依性,但此存留期模型不會區分內部處理和跨程式封送處理。 請小心避免意外地透過跨 Apartment 封送處理或透過全域介面數據表IAgileReference 等內部封送處理型機制來釘選 Surrogate。

系統提供的 Surrogate 對於大多數開發人員來說都非常出色,而且很容易使用。 不過,有特殊考慮的開發人員可能會決定需要自定義代理。 如需詳細資訊,請參閱 撰寫自定義代理