Compartir a través de


Devolución de llamada de notificación

Cualquier componente de impresión o aplicación de escucha que esté interesado en recibir notificaciones debe proporcionar objetos que expongan la interfaz IPrintAsyncNotifyCallback . La interfaz hereda de IUnknown para que los clientes del mecanismo de notificación del administrador de colas puedan implementar un objeto COM o C++.

Una aplicación de escucha debe proporcionar un puntero a una interfaz IPrintAsyncNotifyCallback cuando se registra para recibir notificaciones. El remitente de la notificación debe proporcionar un puntero a una interfaz IPrintAsyncNotifyCallback si está interesado en una respuesta y crea un canal bidireccional.

#define INTERFACE IPrintAsyncNotifyCallback
DECLARE_INTERFACE_(IPrintAsyncNotifyCallback, IUnknown)
{
    STDMETHOD(QueryInterface)(
        THIS_
        REFIID riid,
        void** ppvObj
        ) PURE;

    STDMETHOD_(ULONG, AddRef)(
        THIS
        ) PURE;

    STDMETHOD_(ULONG, Release)(
        THIS
        ) PURE;

    STDMETHOD(OnEventNotify)(
         THIS_
 IN IPrintAsyncNotifyChannel*,
         IN IPrintAsyncNotifyDataObject*
         ) PURE;

 STDMETHOD(ChannelClosed)(
         THIS_
         IN IPrintAsyncNotifyChannel*,
         IN IPrintAsyncNotifyDataObject*
         ) PURE;
};

Cuando se envía una notificación desde un extremo del canal, el servicio de colas llama al método IPrintAsyncNotifyCallback::OnEventNotify en el otro extremo del canal para entregar la notificación.

Cuando el canal de notificación se cierra en un extremo, el servicio de cola llama al método IPrintAsyncNotifyCallback::ChannelClosed en el otro extremo para anunciar que el canal está cerrado. El motivo para cerrar el canal se entrega como una notificación.

Si el servidor o la aplicación de escucha mueren, el código de ejecución del administrador de colas detecta esta condición y el extremo "todavía activo" del canal que sigue activo recibe una notificación mediante una llamada IPrintAsyncNotifyCallback::ChannelClosed , en la que se entrega un mensaje de NOTIFICATION_RELEASE.