Compartir a través de


Eventos COM

En este tema se proporciona una descripción general de los puntos de conexión y se presenta la terminología relacionada con los eventos que se usa normalmente para describir eventos COM.

Los puntos de conexión establecen comunicaciones bidireccionales entre un cliente y un servidor en COM. Con este mecanismo, un servidor COM puede devolver una llamada a un cliente cuando se produce un evento. Por ejemplo, un servidor (como Microsoft Internet Explorer) puede producir un evento para informar de un cambio (por ejemplo, un cambio de título) a su programa cliente. El cliente crea un objeto COM interno denominado receptor de eventos para preparar notificaciones entrantes. Al recibir la notificación, el cliente puede realizar las acciones asociadas al evento.

Un receptor de eventos proporciona una interfaz para exponer al servidor métodos relacionados con el evento. Los servidores provocan eventos llamando a estos métodos relacionados con el evento. El cliente implementa la interfaz del receptor de eventos como una interfaz COM normal. El servidor declara la interfaz como una interfaz de salida. El autor del servidor COM aplica el atributo source a una interfaz en la biblioteca de tipos del servidor COM . El servidor usa definiciones de la interfaz de receptor de eventos para identificar el método sink e invoke.

Un cliente COM que implementa la interfaz de receptor de eventos se conoce a menudo como receptor de eventos, o simplemente receptor. En la ilustración siguiente, el receptor implementa la interfaz ISinkEvents. El servidor que provoca el evento se denomina origen.

Modelo de eventos de puntos de conexión

Eventos COM

Una vez que se ha establecido la interfaz del receptor de eventos, el receptor se debe conectar con el origen. El mecanismo de puntos de conexión usa el siguiente protocolo para conectar un receptor y un origen:

  1. El receptor hace una consulta a un objeto del servidor para obtener la interfaz IConnectionPointContainer. Si el objeto es compatible con los puntos de conexión, devuelve un puntero.

  2. Mediante el uso de métodos en el objeto contenedor, el receptor busca la interfaz IConnectionPoint que representa un punto de conexión concreto. Como un servidor puede admitir varias interfaces de salida, un cliente debe hacer coincidir su receptor con el identificador de interfaz (IID) de una interfaz de puntos de conexión concreta.

  3. Una vez obtenido el objeto de punto de conexión correcto, el receptor llama a IConnectionPoint::Advise para registrar su puntero de interfaz de receptor. El servidor (origen) conserva la conexión (y provoca eventos en ella) hasta que el cliente la interrumpe llamando a IConnectionPoint::Unadvise.

Visual Basic oculta la mayor parte de la información de los puntos de conexión; sin embargo, se debe incluir una directiva WithEvents en la declaración del cliente del servidor. En C++, el código de cliente debe hacer consultas de métodos y llamarlos en IConnectionPointContainer e IConnectionPoint. El servidor implementa las dos interfaces.

Vea también

Tareas

Cómo: Generar eventos controlados por un receptor COM
Cómo: Controlar eventos provocados por un origen COM

Otros recursos

Eventos administrados y no administrados