Événements COM

Mise à jour : novembre 2007

Cette rubrique donne une vue d'ensemble des points de connexion et présente la terminologie liée aux événements, qui est couramment utilisée pour décrire les événements COM.

Les points de connexion établissent une communication bidirectionnelle entre un client et un serveur COM. Grâce à ce mécanisme, un serveur COM peut rappeler un client quand un événement se produit. Par exemple, un serveur (tel que Microsoft Internet Explorer) peut déclencher un événement pour signaler une modification (un changement de titre, par exemple) à son programme client. Le client crée un objet COM interne appelé un récepteur d'événements pour préparer des notifications entrantes. Lors de la réception de la notification, le client peut effectuer les actions associées à l'événement.

Un récepteur d'événements fournit une interface permettant d'exposer au serveur des méthodes liées aux événements. Les serveurs déclenchent des événements en appelant les méthodes liées aux événements. Le client implémente l'interface du récepteur d'événements en tant qu'interface COM classique. Le serveur déclare l'interface en tant qu'interface sortante ; l'auteur du serveur COM applique l'attribut source à l'interface dans la bibliothèque de types du serveur COM. Le serveur utilise les définitions issues de l'interface du récepteur d'événements pour identifier les méthodes sink et invoke.

Un client COM qui implémente l'interface du récepteur d'événements est souvent appelé récepteur d'événements, ou simplement récepteur. Dans l'illustration suivante, le récepteur implémente l'interface ISinkEvents. Le serveur qui déclenche l'événement est appelé source.

Modèle d'événement point de connexion

Événements COM

Une fois l'interface du récepteur d'événements établie, le récepteur doit être connecté à la source. Le mécanisme de point de connexion utilise le protocole suivant pour connecter un récepteur et une source :

  1. Le récepteur interroge un objet serveur au sujet de l'interface IConnectionPointContainer. Si l'objet prend en charge les points de connexion, il retourne un pointeur.

  2. En appliquant des méthodes à l'objet conteneur, le récepteur localise l'interface IConnectionPoint représentant un point de connexion spécifique. Dans la mesure où un serveur peut prendre en charge plusieurs interfaces sortantes, un client doit faire correspondre son récepteur à l'identificateur d'interface (IID) d'une interface de point de connexion particulière.

  3. Après avoir obtenu l'objet point de connexion approprié, le récepteur appelle IConnectionPoint::Advise pour inscrire le pointeur d'interface de son récepteur. Le serveur (source) maintient la connexion (et déclenche les événements correspondants) jusqu'à ce que le client l'interrompe en appelant IConnectionPoint::Unadvise.

Visual Basic masque la plupart des détails concernant les points de connexion ; cependant, vous devez inclure une directive WithEvents dans la déclaration du serveur effectuée par le client. En C++, le code client doit présenter une requête concernant les méthodes IConnectionPointContainer et IConnectionPoint puis appeler ces méthodes. Le serveur implémente les deux interfaces.

Voir aussi

Tâches

Comment : déclencher des événements gérés par un récepteur COM

Comment : gérer les événements déclenchés par une source COM

Autres ressources

Événements managés et non managés