CoDisconnectObject-Funktion (combaseapi.h)
Trennt alle Remoteprozessverbindungen, die im Namen aller Schnittstellenzeiger verwaltet werden, die auf ein angegebenes Objekt verweisen.
Nur der Prozess, der das Objekt tatsächlich verwaltet, sollte CoDisconnectObject aufrufen.
Syntax
HRESULT CoDisconnectObject(
[in] LPUNKNOWN pUnk,
[in] DWORD dwReserved
);
Parameter
[in] pUnk
Ein Zeiger auf eine beliebige Schnittstelle, die von IUnknown für das objekt abgeleitet wird, das getrennt werden soll.
[in] dwReserved
Dieser Parameter ist reserviert und muss 0 sein.
Rückgabewert
Diese Funktion gibt S_OK zurück, um anzugeben, dass alle Verbindungen mit Remoteprozessen erfolgreich gelöscht wurden.
Hinweise
Die CoDisconnectObject-Funktion ermöglicht es einem Server, alle externen Clients ordnungsgemäß mit dem von pUnk angegebenen Objekt zu trennen.
Er führt die folgenden Aufgaben aus:
- Überprüft, ob das zu trennende Objekt die IMarshal-Schnittstelle implementiert. Wenn ja, wird der Zeiger auf diese Schnittstelle abgerufen. Wenn dies nicht der Fall ist, wird ein Zeiger auf die IMarshal-Implementierung des Standardmarshallers (d. h. com's) abgerufen.
- Mit dem IMarshal-Schnittstellenzeiger , den sie abgerufen hat, ruft die Funktion dann IMarshal::D isconnectObject auf, um alle Out-of-Process-Clients zu trennen.
Ebenso kann ein OLE-Container, der externe Links zu seinen eingebetteten Objekten unterstützt, CoDisconnectObject aufrufen, um diese Links zu zerstören. Auch hier erfolgt dieser Aufruf normalerweise als Reaktion darauf, dass ein Benutzer die Anwendung schließt. Der Container sollte zunächst IOleObject::Close für alle ole-Objekte aufrufen, von denen jedes IAdviseSink::OnClose-Benachrichtigungen an die verschiedenen Clients senden sollte. Anschließend kann der Container CoDisconnectObject aufrufen, um alle vorhandenen Verbindungen zu schließen.
CoDisconnectObject trennt nicht unbedingt sofort out-of-process-Clients. Wenn gemarshallte Aufrufe für das Serverobjekt ausstehen, trennt CoDisconnectObject das Objekt nur, wenn diese Aufrufe zurückgegeben wurden. In der Zwischenzeit legt CoDisconnectObject ein Flag fest, das bewirkt, dass alle neuen gemarshallten Aufrufe CO_E_OBJNOTCONNECTED zurückgeben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | combaseapi.h (include Objbase.h) |
Bibliothek | Ole32.lib |
DLL | Ole32.dll |