IExternalConnection 介面 (objidlbase.h)
管理伺服器物件的封送處理或外部連線計數。 維護這類計數的伺服器可以偵測其沒有外部連線時,並依序關閉本身。
繼承
IExternalConnection 介面繼承自 IUnknown 介面。 IExternalConnection 也有下列類型的成員:
方法
IExternalConnection 介面具有這些方法。
IExternalConnection::AddConnection IExternalConnection::AddConnection (objidlbase.h) 方法會遞增對象的強外部連線計數。 |
IExternalConnection::ReleaseConnection IExternalConnection::ReleaseConnection (objidlbase.h) 方法會遞減對象的強外部連線計數。 |
備註
IExternalConnection 最常在伺服器對象上實作,以在無訊息更新之後,啟用內嵌物件連結的排序關機。 在這類情況下,未實作 IExternalConnection 的物件會遺失數據:當最終連結客戶端釋放內嵌 (伺服器) 物件時,會釋放物件存根管理員上的最後一個外部連接,導致存根管理員釋放其指向內嵌物件介面的指標,並起始物件的關機。 此時,伺服器物件會在連結容器上呼叫 IOleClientSite::SaveObject ,而連結容器對 IPersistStorage::Save 的傳回呼叫會失敗,因為存根管理員不再具有內嵌物件的指標。 伺服器對象數據的任何未儲存變更都會遺失。
不過,如果伺服器對象實作 IExternalConnection,當最後一個外部連接釋放時,其存根管理員將不會釋放其與對象的連接。 相反地,它會保持連線,直到物件準備好自行終結為止。
在標準封送處理中,若要遞增物件的外部連接計數,COM 會在物件第一次封送處理時呼叫物件上的 IExternalConnection::AddConnection 。 存根管理員會在取得並釋放後續的外部連接時,呼叫 物件上的 IExternalConnection 方法。 當物件的外部連接計數變成零時,物件可以儲存其數據,然後從執行中的對象數據表撤銷本身,並執行任何其他作業,以將其對象參考計數縮減為零。
實作 IExternalConnection 的對象應該在其外部參考計數下降至 0 時,明確呼叫其本身上的 CoDisconnectObject 。 此呼叫會導致存根管理員在 物件上呼叫 Release ,讓物件可以自行終結。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | objidlbase.h (包含 ObjIdl.h) |