Freigeben über


IExternalConnection-Schnittstelle (objidlbase.h)

Verwaltet die Anzahl von gemarshallten oder externen Verbindungen eines Serverobjekts. Ein Server, der eine solche Anzahl verwaltet, kann erkennen, wenn er über keine externen Verbindungen verfügt, und sich in geordneter Weise herunterfahren.

Vererbung

Die IExternalConnection-Schnittstelle erbt von der IUnknown-Schnittstelle . IExternalConnection verfügt auch über die folgenden Membertypen:

Methoden

Die IExternalConnection-Schnittstelle verfügt über diese Methoden.

 
IExternalConnection::AddConnection

Die IExternalConnection::AddConnection-Methode (objidlbase.h) erhöht die Anzahl der starken externen Verbindungen eines Objekts.
IExternalConnection::ReleaseConnection

Die IExternalConnection::ReleaseConnection-Methode (objidlbase.h) erhöht die Anzahl der starken externen Verbindungen eines Objekts.

Hinweise

IExternalConnection wird am häufigsten für Serverobjekte implementiert, um das geordnete Herunterfahren eines Links zu einem eingebetteten Objekt nach einer automatischen Aktualisierung zu ermöglichen. Objekte, die IExternalConnection nicht implementieren, riskieren in einer solchen Situation den Verlust von Daten: Wenn der letzte Linkclient das eingebettete Objekt (Serverobjekt) freigibt, wird die letzte externe Verbindung im Stub-Manager des Objekts freigegeben, sodass der Stub-Manager seine Zeiger auf Schnittstellen für das eingebettete Objekt freigibt und das Herunterfahren des Objekts initiiert. An diesem Punkt ruft das Serverobjekt IOleClientSite::SaveObject im Linkcontainer auf, und der Rückgabeaufruf des Linkcontainers an IPersistStorage::Save schlägt fehl, da der Stub-Manager keinen Zeiger mehr auf das eingebettete Objekt hat. Alle nicht gespeicherten Änderungen an den Daten des Serverobjekts gehen dann verloren.

Wenn das Serverobjekt jedoch IExternalConnection implementiert, gibt sein Stub-Manager die Verbindung mit dem Objekt nicht frei, wenn die letzte externe Verbindung freigegeben wird. Stattdessen bleibt es verbunden, bis das Objekt bereit ist, sich selbst zu zerstören.

Beim Standardmäßigen Marshalling ruft COM IExternalConnection::AddConnection für das Objekt auf, wenn das Objekt zum ersten Mal gemarst wird, um die Anzahl externer Verbindungen des Objekts zu erhöhen. Der Stub-Manager ruft die Methoden von IExternalConnection für das Objekt auf, wenn nachfolgende externe Verbindungen abgerufen und freigegeben werden. Wenn die Anzahl externer Verbindungen des Objekts auf null steigt, kann das Objekt seine Daten speichern und sich dann aus der ausgeführten Objekttabelle widerrufen und alles tun, was noch erforderlich ist, um seine Objektverweisanzahl auf 0 zu reduzieren.

Ein Objekt, das IExternalConnection implementiert, sollte CoDisconnectObject explizit für sich selbst aufrufen, wenn seine externe Verweisanzahl auf 0 sinkt. Dieser Aufruf bewirkt, dass der Stub-Manager Release für das -Objekt aufruft, damit sich das Objekt selbst zerstören kann.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidlbase.h (include ObjIdl.h)

Weitere Informationen

CoDisconnectObject

CoLockObjectExternal

IOleObject