Unterstützung von Druckeränderungsbenachrichtigungen

Anwendungen können eine Benachrichtigung über das Vorkommen von Druckwarteschlangenereignissen anfordern, indem sie die Funktionen FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification und FindClosePrinterChangeNotification des Spoolers aufrufen. Wenn Sie der Meinung sind, dass Anwendungsautoren Ereignisbenachrichtigungen für Druckwarteschlangen anfordern möchten, die von Ihrem Teildruckanbieter unterstützt werden, müssen Sie Ereignisbenachrichtigungen in Ihrem Anbieter wie folgt unterstützen:

  • Geben Sie eine FindFirstPrinterChangeNotification-Funktion an .

    Der Spooler ruft diese Funktion auf, um den Druckanbieter mit den folgenden Informationen zu versorgen:

    • Eine Reihe von Flags, die die Typen von Druckerereignissen angeben, für die die Anwendung eine Benachrichtigung angefordert hat.

    • Ein Handle für die Druckwarteschlange, für die Benachrichtigungen angefordert werden.

    • Eine Liste von Informationstypen, die die Anwendung beim Auftreten eines Ereignisses angefordert hat.

      Die Funktion muss einen Flagwert zurückgeben, der angibt, ob der Anbieter abgefragt werden soll, um festzustellen, ob Änderungen aufgetreten sind. Nicht abgefragte Anbieter senden signale an den Client, wenn Änderungen auftreten. Ein Anbieter, der abgefragt werden muss, sendet keine Signale an einen Client, wenn Änderungen auftreten. Stattdessen signalisiert der Spooler dem Client in regelmäßigen Abständen, ob Änderungen aufgetreten sind oder nicht.

      Auf Anbieterebene verfügt diese Funktion über andere Argumente als auf Win32-Ebene.

  • Verfolgen Sie alle Druckwarteschlangenereignisse nach, die die Anwendung angegeben hat, als sie FindFirstPrinterChangeNotification aufgerufen hat.

    Eine Liste der Typen von Benachrichtigungen, die eine Anwendung anfordern kann, und eine Liste der Informationstypen, die zum Beschreiben eines Ereignisses verwendet werden können, finden Sie unter der Win32 FindFirstPrinterChangeNotification-Funktion . Zu den Arten von Ereignissen, für die eine Anwendung eine Benachrichtigung anfordern kann, gehören das Hinzufügen oder Löschen eines Druckauftrags oder Formulars. Zu den Informationstypen, die eine Anwendung anfordern kann, gehören Auftrags- oder Formularparameter.

    Druckanbieter, die nicht abgefragt werden, müssen partialReplyPrinterChangeNotification oder ReplyPrinterChangeNotification aufrufen, wenn Änderungen auftreten, um dem Spooler Informationen zur Beschreibung der Änderungen zur Verfügung zu stellen. Die ReplyPrinterChangeNotification-Funktion muss irgendwann aufgerufen werden, da sie bewirkt, dass der Spooler die Anwendung signalisiert, während die PartialReplyPrinterChangeNotification-Funktion dies nicht tut. Wenn die Anwendung ein Signal von ReplyPrinterChangeNotification empfängt, sollte sie FindNextPrinterChangeNotification aufrufen. Diese letztere Funktion stellt der Anwendung die Ereignisinformationen bereit, die der Spooler zuvor vom Druckanbieter empfangen hat.

    Druckanbieter, die abgefragt werden, sollten einfach änderungen nachverfolgen. Der Spooler signalisiert die Anwendung in regelmäßigen Abständen. Wenn die Anwendung ein Signal empfängt, soll sie die FindNextPrinterChangeNotification-Funktion des Spoolers aufrufen. Für abgefragte Anbieter ruft diese Funktion die RefreshPrinterChangeNotification-Funktion des Anbieters auf.

  • Geben Sie eine RefreshPrinterChangeNotification-Funktion an .

    Diese Funktion muss den aktuellen Zustand aller überwachten Druckwarteschlangenoptionen für die angegebene Druckwarteschlange zurückgeben. Der Spooler ruft diese Funktion auf, wenn eine Anwendung FindNextPrinterChangeNotification mit festgelegtem PRINTER_NOTIFY_OPTIONS_REFRESH-Flag aufruft.

    Anwendungen sollten dieses Flag festlegen, wenn ein vorheriger Aufruf von FindNextPrinterChangeNotification eine PRINTER_NOTIFY_INFO-Struktur mit festgelegtem PRINTER_NOTIFY_INFO_DISCARDED-Flag zurückgibt. Sowohl abgefragte als auch nichtpolierte Anbieter müssen RefreshPrinterChangeNotification unterstützen.

  • Geben Sie eine FindClosePrinterChangeNotification-Funktion an .