Partager via


Méthode IMarshal ::D isconnectObject (objidlbase.h)

Libère toutes les connexions à un objet. Le serveur de l’objet appelle l’implémentation de cette méthode par l’objet avant l’arrêt.

Syntaxe

HRESULT DisconnectObject(
  [in] DWORD dwReserved
);

Paramètres

[in] dwReserved

Ce paramètre est réservé et doit être 0.

Valeur retournée

Si la méthode réussit, la valeur de retour est S_OK. Sinon, c’est E_FAIL.

Remarques

Cette méthode est implémentée sur l’objet, et non sur le proxy.

Notes aux appelants

Le cas habituel où cette méthode est appelée se produit lorsqu’un utilisateur final ferme de force un serveur COM qui a un ou plusieurs objets en cours d’exécution qui implémentent IMarshal. Avant l’arrêt, le serveur appelle la fonction CoDisconnectObject pour libérer les connexions externes à tous ses objets en cours d’exécution. Toutefois, pour chaque objet qui implémente IMarshal, cette fonction appelle DisconnectObject afin que chaque objet qui gère son propre marshaling puisse prendre des mesures pour notifier son proxy qu’il est sur le point de s’arrêter.

Notes aux implémenteurs

Dans le cadre de son code d’arrêt normal, un serveur doit appeler CoDisconnectObject, qui à son tour appelle DisconnectObject, sur chacun de ses objets en cours d’exécution qui implémente IMarshal.

Le résultat de toute implémentation de cette méthode doit être de permettre à un proxy de répondre à tous les appels suivants de son client en retournant RPC_E_DISCONNECTED ou CO_E_OBJNOTCONNECTED plutôt que de tenter de transférer les appels à l’objet d’origine. C’est au client de détruire le proxy.

Si vous implémentez cette méthode pour un objet immuable, tel qu’un moniker, votre implémentation n’a pas besoin d’effectuer quoi que ce soit, car ces objets sont généralement copiés entiers dans l’espace d’adressage du client. Par conséquent, ils n’ont ni proxy ni connexion à l’objet d’origine. Pour plus d’informations sur le marshaling d’objets immuables, consultez la section « Quand implémenter » de la rubrique IMarshal .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidlbase.h (inclure ObjIdl.h)

Voir aussi

CoDisconnectObject

IMarshal