Interface IExternalConnection (objidl.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 (objidl.h) incrémente le nombre de connexions externes fortes d’un objet. |
IExternalConnection ::ReleaseConnection La méthode IExternalConnection ::ReleaseConnection (objidl.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 | objidl.h (inclure ObjIdl.h) |