支援印表機變更通知
應用程式可以藉由呼叫多任務緩衝處理程式的 FindFirstPrinterChangeNotification、FindNextPrinterChangeNotification 和 FindClosePrinterChangeNotification 函式來要求列印佇列事件的通知。 如果您認為應用程式寫入器想要針對部分列印提供者支援的列印佇列要求事件通知,您必須在提供者中支援事件通知,如下所示:
提供 FindFirstPrinterChangeNotification 函式 。
多任務緩衝處理程式會呼叫此函式,以提供列印提供者下列資訊:
一組旗標,指出應用程式已要求通知的印表機事件類型。
正在要求通知之列印佇列的句柄。
應用程式在事件發生時要求提供的資訊類型清單。
函式必須傳回旗標值,指出是否應該輪詢提供者,以判斷是否已發生變更。 非輪詢提供者會在發生變更時傳送訊號給用戶端。 必須輪詢的提供者不會在發生變更時傳送訊號給用戶端。 相反地,多任務緩衝處理程式會定期向用戶端發出訊號,不論變更是否發生。
在提供者層級,此函式具有不同於 Win32 層級的自變數。
追蹤應用程式在呼叫 FindFirstPrinterChangeNotification 時所指定的所有列印佇列事件。
如需應用程式可要求之通知類型的清單,以及可用來描述事件的信息類型清單,請參閱 Win32 FindFirstPrinterChangeNotification 函式。 應用程式可能會要求通知的事件類型包括新增或刪除列印作業或窗體。 應用程式可能要求的信息類型包括作業或窗體參數。
未輪詢的列印提供者必須在發生變更時呼叫 PartialReplyPrinterChangeNotification 或 ReplyPrinterChangeNotification ,以提供描述變更的資訊給多任務緩衝處理程式。 ReplyPrinterChangeNotification 函式必須在某個時間點呼叫,因為它會導致多任務緩衝處理程式發出應用程式訊號,而 PartialReplyPrinterChangeNotification 函式則不會呼叫。 當應用程式從 ReplyPrinterChangeNotification 收到訊號時,應該呼叫 FindNextPrinterChangeNotification。 後者函式會提供應用程式,其中包含先前從列印提供者收到的多任務緩衝處理程式事件資訊。
輪詢的列印提供者應該只追蹤變更。 多任務緩衝處理會定期向應用程式發出訊號。 當應用程式收到訊號時,應該呼叫多任務緩衝處理程式的 FindNextPrinterChangeNotification 函式。 對於輪詢的提供者,此函式會呼叫提供者的 RefreshPrinterChangeNotification 函式。
提供 RefreshPrinterChangeNotification 函式。
此函式必須針對指定的列印佇列傳回所有受監視列印佇列選項的目前狀態。 當應用程式使用PRINTER_NOTIFY_OPTIONS_REFRESH旗標集呼叫 FindNextPrinterChangeNotification 時,多任務緩衝處理程式會呼叫此函式。
如果先前呼叫 FindNextPrinterChangeNotification 傳回具有PRINTER_NOTIFY_INFO_DISCARDED旗標集的PRINTER_NOTIFY_INFO結構,則應用程式應該設定此旗標。 輪詢和非Poled 提供者都必須支援 RefreshPrinterChangeNotification。
提供 FindClosePrinterChangeNotification 函式。