ISurrogate::FreeSurrogate 方法 (objidl.h)
卸除 DLL 伺服器。
Syntax
HRESULT FreeSurrogate();
傳回值
這個方法可以傳回標準傳回值E_UNEXPECTED、E_FAIL和S_OK。
備註
COM 會在代理程式中沒有其他 DLL 伺服器執行時呼叫 FreeSurrogate 。 呼叫 FreeSurrogate 時,方法必須正確地撤銷在 Surrogate 中註冊的所有類別處理站,然後導致 Surrogate 進程結束。
Surrogate 進程必須定期呼叫 CoFreeUnusedLibraries 函式,以卸除不再使用的 DLL 伺服器。 代理程式會假設此責任,這通常是客戶端的責任。 CoFreeUnusedLibraries 會在任何載入的 DLL 伺服器上呼叫 DllCanUnloadNow 函 式。 由於 CoFreeUnusedLibraries 相依於 DLL 伺服器中 DllCanUnloadNow 的存在和適當實作,因此不保證卸除所有應該卸除的 DLL 伺服器--不是每部伺服器都會實作 DllCanUnloadNow,而且此函式對自由線程 DLL 而言不可靠。 此外,當所有 DLL 伺服器都消失時,Surrogate 沒有辦法通知。 不過,COM 可以判斷所有 DLL 伺服器是否已卸除,然後呼叫 FreeSurrogate 方法。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | objidl.h (包含 ObjIdl.h) |