Compartir a través de


Registro para recibir notificaciones

Los clientes que escuchan llaman al método RegisterForPrintAsyncNotifications para registrarse para recibir notificaciones. El cliente de escucha puede ser una aplicación o puede ejecutarse dentro del colador. Winspool.drv expone esta funcionalidad independientemente de dónde se cargue.

Spoolss.lib expone esta funcionalidad para que los monitores de puerto puedan registrarse para recibir notificaciones. Los componentes que se ejecutan dentro del spooler y que se vinculan a Spoolss.lib pueden llamar a RegisterForPrintAsyncNotifications. En el procedimiento siguiente se detalla la información que se debe pasar en una llamada a esta función. El primer paso del procedimiento se aplica al primer parámetro, el segundo paso se aplica al segundo parámetro, etc.

HRESULT
 RegisterForPrintAsyncNotifications(
    IN LPCWSTR,
    IN PrintAsyncNotificationType*,
    IN PrintAsyncNotifyUserFilter,
    IN PrintAsyncNotifyConversationStyle,
    IN IPrintAsyncNotifyCallback*,
    OUT HANDLE*
    );

Para registrarse para recibir notificaciones, especifique lo siguiente:

  1. Un nombre de servidor o impresora local o remota.

  2. Tipo de notificación en la que está interesado el agente de escucha.

  3. Filtro de usuario, que indica al usuario desde el que el cliente está interesado en recibir notificaciones, ya sea el mismo usuario que el remitente de la notificación o todos los usuarios.

  4. Filtro de estilo de conversación. El cliente puede especificar una comunicación unidireccional o bidireccional.

  5. Se llamará a la interfaz IPrintAsyncNotifyCallback cuando una notificación vuelva del otro extremo del canal. Este parámetro no puede ser NULL.

Cuando esta función vuelve, el sexto parámetro (de tipo HANDLE*) apunta a un identificador de registro. El identificador de registro es una estructura opaca que recibe el cliente. El registro está asociado a la identidad de usuario del subproceso que realiza la llamada de registro. El administrador de colas filtra los clientes que escuchan según el filtro de sesión del canal y la sesión de registro del cliente, además del filtro de la sesión del cliente.

Para notificar al administrador de colas que el cliente de escucha ya no debe recibir notificaciones, el cliente debe usar este identificador cuando llama a UnRegisterForPrintAsyncNotifications. Para la comunicación unidireccional, se descartan las notificaciones pendientes en el lado servidor. Para la comunicación bidireccional, si hay canales bidireccionales abiertos, la comunicación continúa hasta que se cierran.

HRESULT
 UnRegisterForPrintAsyncNotifications(
    IN HANDLE
    );