Partager via


Inscription pour recevoir des notifications

Les clients à l’écoute appellent la méthode RegisterForPrintAsyncNotifications pour s’inscrire à la réception de notifications. Le client d’écoute peut être une application ou peut s’exécuter à l’intérieur du spouleur. Winspool.drv expose cette fonctionnalité, quel que soit l’endroit où elle est chargée.

Spoolss.lib expose cette fonctionnalité afin que les moniteurs de port puissent s’inscrire aux notifications. Les composants qui s’exécutent à l’intérieur du spouleur et qui sont liés à Spoolss.lib peuvent appeler RegisterForPrintAsyncNotifications. La procédure suivante détaille les informations qui doivent être passées dans un appel à cette fonction. La première étape de la procédure s’applique au premier paramètre, la deuxième étape s’applique au deuxième paramètre, et ainsi de suite.

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

Pour vous inscrire aux notifications, spécifiez les éléments suivants :

  1. Un nom de serveur ou d’imprimante local/distant.

  2. Type de notification qui intéresse l’écouteur.

  3. Filtre utilisateur, qui indique l’utilisateur à partir duquel le client souhaite recevoir des notifications, soit le même utilisateur que l’expéditeur de la notification, soit tous les utilisateurs.

  4. Filtre de style de conversation. Le client peut spécifier une communication unidirectionnelle ou bidirectionnelle.

  5. Interface IPrintAsyncNotifyCallback à appeler lorsqu’une notification est retournée à partir de l’autre extrémité du canal. Ce paramètre ne peut pas être NULL.

Lorsque cette fonction retourne, le sixième paramètre (de type HANDLE*) pointe vers un handle d’inscription. Le handle d’inscription est une structure opaque que le client reçoit. L’inscription est associée à l’identité utilisateur du thread qui effectue l’appel d’inscription. Le spouleur filtre les clients à l’écoute en fonction du filtre de session du canal et de la session d’inscription du client, en plus du filtre de la session cliente.

Pour informer le spouleur que le client d’écoute ne doit plus recevoir de notifications, le client doit utiliser ce handle lorsqu’il appelle UnRegisterForPrintAsyncNotifications. Pour la communication unidirectionnelle, toutes les notifications en attente côté serveur sont ignorées. Pour la communication bidirectionnelle, s’il existe des canaux bidirectionnels ouverts, la communication se poursuit jusqu’à ce qu’ils soient fermés.

HRESULT
 UnRegisterForPrintAsyncNotifications(
    IN HANDLE
    );