Partager via


Interface IExternalConnection (objidlbase.h)

Gère le nombre de connexions marshalées ou externes d'objet serveur. Un serveur qui gère un tel nombre peut détecter quand il n’a pas de connexions externes et s’arrêter de manière ordonnée.

Héritage

L’interface IExternalConnection hérite de l’interface IUnknown. IExternalConnection a également les types de membres suivants :

Méthodes

L’interface IExternalConnection utilise ces méthodes.

 
IExternalConnection ::AddConnection

La méthode IExternalConnection ::AddConnection (objidlbase.h) incrémente le nombre de connexions externes fortes d’un objet.
IExternalConnection ::ReleaseConnection

La méthode IExternalConnection ::ReleaseConnection (objidlbase.h) décrémente le nombre de connexions externes fortes d’un objet.

Remarques

IExternalConnection est le plus souvent implémenté sur les objets serveur, pour permettre l’arrêt ordonné d’un lien vers un objet incorporé après une mise à jour silencieuse. Les objets qui n’implémentent pas IExternalConnection risquent de perdre des données dans une telle situation : lorsque le client de liaison final libère l’objet incorporé (serveur), la dernière connexion externe sur le gestionnaire de stubs de l’objet est libérée, ce qui entraîne la libération de ses pointeurs vers les interfaces sur l’objet incorporé et lancez l’arrêt de l’objet. À ce stade, l’objet serveur appelle IOleClientSite ::SaveObject sur le conteneur de liens, et l’appel de retour du conteneur de liens vers IPersistStorage ::Save échoue, car le gestionnaire de stub n’a plus de pointeur vers l’objet incorporé. Toute modification non enregistrée des données de l’objet serveur serait alors perdue.

Toutefois, si l’objet serveur implémente IExternalConnection, son gestionnaire de stubs ne libère pas sa connexion à l’objet lorsque la dernière connexion externe est libérée. Au lieu de cela, il reste connecté jusqu’à ce que l’objet soit prêt à se détruire lui-même.

Dans le marshaling standard, pour incrémenter le nombre de connexions externes de l’objet, COM appelle IExternalConnection ::AddConnection sur l’objet lorsque l’objet est marshalé pour la première fois. Le gestionnaire de stub appelle les méthodes de IExternalConnection sur l’objet à mesure que les connexions externes suivantes sont obtenues et libérées. Lorsque le nombre de connexions externes de l’objet passe à zéro, l’objet peut enregistrer ses données, puis se révoquer de la table d’objets en cours d’exécution et faire tout ce qui est nécessaire pour réduire son nombre de références d’objets à zéro.

Un objet qui implémente IExternalConnection doit appeler explicitement CoDisconnectObject sur lui-même lorsque son nombre de références externes passe à 0. Cet appel amène le gestionnaire de stubs à appeler Release sur l’objet afin que l’objet puisse se détruire lui-même.

Configuration requise

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

Voir aussi

CoDisconnectObject

CoLockObjectExternal

IOleObject