Prendre en charge les notifications de modification d’imprimante
Les applications peuvent demander la notification des occurrences d’événements de file d’attente d’impression en appelant les fonctions FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification et FindClosePrinterChangeNotification du spouleur. Si vous pensez que les rédacteurs d’applications souhaiteront demander une notification d’événement pour les files d’attente d’impression prises en charge par votre fournisseur d’impression partielle, vous devez prendre en charge la notification d’événements dans votre fournisseur comme suit :
Fournissez une fonction FindFirstPrinterChangeNotification .
Le spouleur appelle cette fonction pour fournir au fournisseur d’impression les informations suivantes :
Ensemble d’indicateurs indiquant les types d’événements d’imprimante pour lesquels l’application a demandé la notification.
Handle de la file d’attente d’impression pour laquelle des notifications sont demandées.
Liste des types d’informations que l’application a demandé à fournir lorsqu’un événement se produit.
La fonction doit retourner une valeur d’indicateur qui indique si le fournisseur doit être interrogé pour déterminer si des modifications ont eu lieu. Les fournisseurs non interrogés envoient des signaux au client chaque fois que des modifications se produisent. Un fournisseur qui doit être interrogé n’envoie pas de signaux à un client lorsque des modifications se produisent. Au lieu de cela, le spouleur signale au client à intervalles réguliers, que des modifications se soient produites ou non.
Au niveau du fournisseur, cette fonction a des arguments différents de ceux du niveau Win32.
Effectuez le suivi de tous les événements de file d’attente d’impression spécifiés par l’application lorsqu’elle a appelé FindFirstPrinterChangeNotification.
Pour obtenir la liste des types de notifications qu’une application peut demander, et pour obtenir la liste des types d’informations pouvant être utilisés pour décrire un événement, consultez la fonction Win32 FindFirstPrinterChangeNotification . Les types d’événements pour lesquels une application peut demander une notification incluent l’ajout ou la suppression d’un travail ou d’un formulaire d’impression. Les types d’informations qu’une application peut demander incluent des paramètres de travail ou de formulaire.
Les fournisseurs d’impression qui ne sont pas interrogés doivent appeler PartialReplyPrinterChangeNotification ou ReplyPrinterChangeNotification lorsque des modifications se produisent, pour fournir au spouleur des informations décrivant les modifications. La fonction ReplyPrinterChangeNotification doit être appelée à un moment donné, car elle entraîne le spouleur à signaler l’application, contrairement à la fonction PartialReplyPrinterChangeNotification . Lorsque l’application reçoit un signal de ReplyPrinterChangeNotification, elle est censée appeler FindNextPrinterChangeNotification. Cette dernière fonction fournit à l’application les informations d’événement que le spouleur a précédemment reçues du fournisseur d’impression.
Les fournisseurs d’impression interrogés doivent simplement suivre les modifications. Le spouleur signale l’application à intervalles réguliers. Lorsque l’application reçoit un signal, elle est censée appeler la fonction FindNextPrinterChangeNotification du spouleur. Pour les fournisseurs interrogés, cette fonction appelle la fonction RefreshPrinterChangeNotification du fournisseur.
Fournissez une fonction RefreshPrinterChangeNotification .
Cette fonction doit retourner l’état actuel de toutes les options de file d’attente d’impression surveillées pour la file d’attente d’impression spécifiée. Le spouleur appelle cette fonction lorsqu’une application appelle FindNextPrinterChangeNotification avec l’indicateur PRINTER_NOTIFY_OPTIONS_REFRESH défini.
Les applications sont censées définir cet indicateur si un appel précédent à FindNextPrinterChangeNotification retourne une structure PRINTER_NOTIFY_INFO avec l’indicateur PRINTER_NOTIFY_INFO_DISCARDED défini. Les fournisseurs interrogés et non délimités doivent prendre en charge RefreshPrinterChangeNotification.
Fournissez une fonction FindClosePrinterChangeNotification .