|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
FindFirstPrinterChangeNotification
The FindFirstPrinterChangeNotification function creates a change notification object and returns a handle to the object. You can then use this handle in a call to one of the wait functions to monitor changes to the printer or print server.
The FindFirstPrinterChangeNotification call specifies the type of changes to be monitored. You can specify a set of conditions to monitor for changes, a set of printer information fields to monitor, or both. A wait operation on the change notification handle succeeds when one of the specified changes occurs in the specified printer or print server. You then call the FindNextPrinterChangeNotification function to retrieve information about the change, and to reset the change notification object for use in the next wait operation.
HANDLE FindFirstPrinterChangeNotification(
HANDLE hPrinter, // handle to printer or print server to monitor for changes DWORD fdwFlags, // flags that specify the conditions to monitor DWORD fdwOptions, // reserved, must be zero LPVOID pPrinterNotifyOptions // pointer to structure specifying printer information to monitor );
Parameters
hPrinter
Handle to the printer or print server that you want to monitor. This handle is obtained by calling the OpenPrinter function.
fdwFlags
A set of bit flags that specify the conditions that will cause the change notification object to enter a signaled state. A change notification occurs when one or more of the specified conditions are met. The fdwFlags parameter can be zero if pPrinterNotifyOptions is non-NULL. You can set one or more of the following change notification constants:
Value Meaning PRINTER_CHANGE_FORM Notify of any changes to a form. You can set this general flag or one or more of the following specific flags: PRINTER_CHANGE_ADD_FORM PRINTER_CHANGE_SET_FORM PRINTER_CHANGE_DELETE_FORM PRINTER_CHANGE_JOB Notify of any changes to a job. You can set this general flag or one or more of the following specific flags: PRINTER_CHANGE_ADD_JOB PRINTER_CHANGE_SET_JOB PRINTER_CHANGE_DELETE_JOB PRINTER_CHANGE_WRITE_JOB PRINTER_CHANGE_PORT Notify of any changes to a port. You can set this general flag or one or more of the following specific flags: PRINTER_CHANGE_ADD_PORT PRINTER_CHANGE_CONFIGURE_PORT PRINTER_CHANGE_DELETE_PORT PRINTER_CHANGE_PRINT_PROCESSOR Notify of any changes to a print processor. You can set this general flag or one or more of the following specific flags: PRINTER_CHANGE_ADD_PRINT_PROCESSOR PRINTER_CHANGE_DELETE_PRINT_PROCESSOR PRINTER_CHANGE_PRINTER Notify of any changes to a printer. You can set this general flag or one or more of the following specific flags: PRINTER_CHANGE_ADD_PRINTER PRINTER_CHANGE_SET_PRINTER PRINTER_CHANGE_DELETE_PRINTER PRINTER_CHANGE_FAILED_CONNECTION_PRINTER PRINTER_CHANGE_PRINTER_DRIVER Notify of any changes to a printer driver. You can set this general flag or one or more of the following specific flags: PRINTER_CHANGE_ADD_PRINTER_DRIVER PRINTER_CHANGE_SET_PRINTER_DRIVER PRINTER_CHANGE_DELETE_PRINTER_DRIVER PRINTER_CHANGE_ALL Notify if any of the preceding changes occur.
For descriptions of the more specific flags in the preceding table, see the FindNextPrinterChangeNotification function.
fdwOptions
Reserved; must be zero.
pPrinterNotifyOptions
Pointer to a PRINTER_NOTIFY_OPTIONS structure. The pTypes member of this structure points to an array of one or more PRINTER_NOTIFY_OPTIONS_TYPE structures, each of which specifies a printer information field to monitor. A change notification occurs when one or more of the specified fields changes. When a change occurs, the FindNextPrinterChangeNotification function can retrieve the new printer information. This parameter can be NULL if fdwFlags is nonzero.
For a list of fields that can be monitored, see PRINTER_NOTIFY_OPTIONS_TYPE.
Return Values
If the function succeeds, the return value is a handle to a change notification object associated with the specified printer or print server. If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
Remarks
To monitor a printer or print server, call the FindFirstPrinterChangeNotification function, then use the returned change notification object handle in a call to one of the wait functions. A wait operation on a change notification object is satisfied when the change notification object enters the signaled state. The system signals the object when one or more of the changes specified by fdwFlags or pPrinterNotifyOptions occurs in the monitored printer or print server.
When you call FindFirstPrinterChangeNotification, either fdwFlags must be nonzero or pPrinterNotifyOptions must be non-NULL. If both are specified, notifications will occur for both. When a wait operation on a printer change notification object is satisfied, call the FindNextPrinterChangeNotification function to determine the cause of the notification. For a condition specified by fdwFlags, FindNextPrinterChangeNotification reports the condition or conditions that changed. For a printer information field specified by pPrinterNotifyOptions , FindNextPrinterChangeNotification reports the field or fields that changed as well as the new information for these fields. FindNextPrinterChangeNotification also resets the change notification object to the nonsignaled state so you can use it in another wait operation to continue monitoring the printer or print server.
Do not call the FindNextPrinterChangeNotification function if the change notification object is not in the signaled state. If the wait function returns the value WAIT_TIMEOUT, the change object is not in the signaled state. Call the FindNextPrinterChangeNotification function only if the wait function succeeds without timing out. When you no longer need the change notification object, close it by calling the FindClosePrinterChangeNotification function.
The three Find*PrinterChangeNotification functions, in combination with the wait functions, provide an asynchronous and resource-efficient alternative to the WaitForPrinterChange function.
See Also
FindClosePrinterChangeNotification, FindNextPrinterChangeNotification, OpenPrinter, PRINTER_NOTIFY_OPTIONS, PRINTER_NOTIFY_OPTIONS_TYPE, WaitForPrinterChange
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
FindFirstPrinterChangeNotification
Функция FindFirstPrinterChangeNotification создает объект уведомления изменения и возвращает ручку на объект. Вы можете затем использовать эту ручку на вызове в одну из функций ожидания, чтобы проверять изменениям в сервер принтера или распечатки.
Вызов FindFirstPrinterChangeNotification определяет тип изменений, которые нужно проверяться. Вы можете определить установку условий, чтобы проверяться для изменений, установка информационных областей принтера, чтобы проверять, или оба. Операция ожидания в ручке уведомления изменения добивается успеха когда одно из определенных изменений происходит в определенном сервере принтера или распечатки. Вы затем называете функцию FindNextPrinterChangeNotification, чтобы извлекать информацию об изменении, и, чтобы восстанавливать объект уведомления изменения для использования на следующей операции ожидания.
РУЧКА FindFirstPrinterChangeNotification(
РУЧКА hPrinter, // оперируется в принтер или печатает сервер, чтобы проверяться для изменений DWORD fdwFlags, // флаги, что определять условия, чтобы проверять DWORD fdwOptions, // зарезервированное, должно - нулевым УКАЗАТЕЛЬ LPVOID pPrinterNotifyOptions // в структуру, определяющую, что информация принтера проверяет );
Параметры
hPrinter
Прооперируйте принтер или печатайте сервер, который Вы хотите проверить. Эта ручка получена вызовом функции OpenPrinter.
fdwFlags
Установка бита сигнализирует, что определяет условия, которые вызовут объект уведомления изменения против ввода сигнальное состояние. Уведомление изменения происходит когда одно или более из определенных условий выполнены. Параметр fdwFlags может быть нулем если pPrinterNotifyOptions не-НЕДЕЙСТВИТЕЛЕН. Вы можете установить одна или более из констант уведомления изменения следующего:
Оцените Значение PRINTER_CHANGE_FORM Уведомите о любых изменениях в форму. Вы можете установить этот общий флаг или один или более из следующих специфических флагов: PRINTER_CHANGE_ADD_FORM PRINTER_CHANGE_SET_FORM PRINTER_CHANGE_DELETE_FORM PRINTER_CHANGE_JOB Уведомите о любых изменениях в работу. Вы можете установить этот общий флаг или один или более из следующих специфических флагов: PRINTER_CHANGE_ADD_JOB PRINTER_CHANGE_SET_JOB PRINTER_CHANGE_DELETE_JOB PRINTER_CHANGE_WRITE_JOB PRINTER_CHANGE_PORT Уведомите о любых изменениях в порт. Вы можете установить этот общий флаг или один или более из следующих специфических флагов: PRINTER_CHANGE_ADD_PORT PRINTER_CHANGE_CONFIGURE_PORT PRINTER_CHANGE_DELETE_PORT PRINTER_CHANGE_PRINT_PROCESSOR Уведомите о любых изменениях в процессор распечатки. Вы можете установить этот общий флаг или один или более из следующих специфических флагов: PRINTER_CHANGE_ADD_PRINT_PROCESSOR PRINTER_CHANGE_DELETE_PRINT_PROCESSOR PRINTER_CHANGE_PRINTER Уведомляет о любых изменениях в принтер. Вы можете установить этот общий флаг или один или более из следующих специфических флагов: PRINTER_CHANGE_ADD_PRINTER PRINTER_CHANGE_SET_PRINTER PRINTER_CHANGE_DELETE_PRINTER PRINTER_CHANGE_FAILED_CONNECTION_PRINTER PRINTER_CHANGE_PRINTER_DRIVER Уведомляет о любых изменениях на драйвер принтера. Вы можете установить этот общий флаг или один или более из следующих специфических флагов: PRINTER_CHANGE_ADD_PRINTER_DRIVER PRINTER_CHANGE_SET_PRINTER_DRIVER PRINTER_CHANGE_DELETE_PRINTER_DRIVER PRINTER_CHANGE_ALL Уведомитесь если любое из предыдущих изменений происходят.
Для описаний более специфических флагов в предыдущей таблице, смотри функцию FindNextPrinterChangeNotification.
fdwOptions
Зарезервированное; должно - нулевым.
pPrinterNotifyOptions
Указатель в структуру PRINTER_NOTIFY_OPTIONS. Элемент pTypes этой структуры указывает на массив одной или более структур PRINTER_NOTIFY_OPTIONS_TYPE, которые определяют информационную область принтера, чтобы проверяться. Уведомление изменения происходит когда одно или более из определенных изменений областей. Когда изменение происходит, функция FindNextPrinterChangeNotification может извлечь новую информацию принтера. Этот параметр может быть НЕДЕЙСТВИТЕЛЕН если fdwFlags ненулевой.
Для списка областей, которые могут быть проверены, смотри PRINTER_NOTIFY_OPTIONS_TYPE.
Обратные Величины
Если функция добивается успеха, обратная величина является ручкой на объект уведомления изменения связанный определенным сервером принтера или распечатки. Если функция терпит неудачу, обратная величина - INVALID_HANDLE_VALUE. Для того, чтобы расширять информацию ошибки, назовите GetLastError.
Замечания
Для того, чтобы проверять принтер или печатать сервер, назовите функцию FindFirstPrinterChangeNotification, затем используйте возвращанное уведомление изменения объектной ручки на вызове в одну из функций ожидания. Операция ожидания на объекте уведомления изменения удовлетворена когда объект уведомления изменения вводит сигнальное состояние. Система сигнализирует объект когда одно или более из изменений определялись fdwFlags или pPrinterNotifyOptions происходит в проверенном сервере принтера или распечатки.
Когда Вы называете FindFirstPrinterChangeNotification, или fdwFlags должен быть ненулевым или pPrinterNotifyOptions должен быть не-НЕДЕЙСТВИТЕЛЕН. Если оба определены, уведомления произойдет для обоих. Когда операция ожидания на объекте уведомления изменения принтера удовлетворена, назовите функцию FindNextPrinterChangeNotification, чтобы определять причину уведомления. Для условия определенного fdwFlags, FindNextPrinterChangeNotification сообщает условие или условия, что изменялся. Для информационной области принтера определялся pPrinterNotifyOptions , FindNextPrinterChangeNotification сообщает область или области, что измененное, а также новая информация для этих областей. FindNextPrinterChangeNotification ТАКЖЕ сбрасывает объект уведомления изменения против nonsignaled состояния, так что Вы можете использовать это на другой операции ожидания, чтобы продолжать проверять принтер или печатать сервер.
Не называйте функцию FindNextPrinterChangeNotification если объект уведомления изменения - не в сигнальном состоянии. Если функция ожидания возвращает величину WAIT_TIMEOUT, объект изменения - не в сигнальном состоянии. Назовите функцию FindNextPrinterChangeNotification только если функция ожидания добивается успеха не синхронизируя. Когда Вы больше не нужно объект уведомления изменения, закройте этому вызывая функцию FindClosePrinterChangeNotification.
Три функции Find*PrinterChangeNotification, в комбинации с функциями ожидания, обеспечивать асинхронную и ресурс-эффективную альтернативу для функции WaitForPrinterChange.
Смотри Также
FindClosePrinterChangeNotification, FindNextPrinterChangeNotification, OpenPrinter, PRINTER_NOTIFY_OPTIONS, PRINTER_NOTIFY_OPTIONS_TYPE, WaitForPrinterChange
|
|
|
|
| |