Função FindFirstPrinterChangeNotification
A função FindFirstPrinterChangeNotification cria um objeto de notificação de alteração e retorna um identificador para o objeto . Em seguida, você pode usar esse identificador em uma chamada para uma das funções de espera para monitorar as alterações na impressora ou no servidor de impressão.
A chamada FindFirstPrinterChangeNotification especifica o tipo de alterações a serem monitoradas. Você pode especificar um conjunto de condições para monitorar alterações, um conjunto de campos de informações da impressora a serem monitorados ou ambos.
Uma operação de espera no identificador de notificação de alteração é bem-sucedida quando ocorre uma das alterações especificadas na impressora ou no servidor de impressão especificado. Em seguida, chame a função FindNextPrinterChangeNotification para recuperar informações sobre a alteração e redefinir o objeto de notificação de alteração para uso na próxima operação de espera.
Sintaxe
HANDLE FindFirstPrinterChangeNotification(
_In_ HANDLE hPrinter,
DWORD fdwFilter,
DWORD fdwOptions,
_In_opt_ LPVOID pPrinterNotifyOptions
);
Parâmetros
-
hPrinter [in]
-
Um identificador para a impressora ou servidor de impressão que você deseja monitorar. Use a função OpenPrinter ou AddPrinter para recuperar um identificador de impressora.
-
fdwFilter
-
As condições que farão com que o objeto de notificação de alteração insira um estado sinalizado. Uma notificação de alteração ocorre quando uma ou mais das condições especificadas são atendidas. O parâmetro fdwFilter poderá ser zero se pPrinterNotifyOptions não for NULL.
Esse parâmetro pode usar um dos valores a seguir.
Valor Significado - PRINTER_CHANGE_FORM
Notifique as alterações em um formulário. Você pode definir esse sinalizador geral ou um ou mais dos seguintes sinalizadores específicos:
- PRINTER_CHANGE_ADD_FORM
- PRINTER_CHANGE_SET_FORM
- PRINTER_CHANGE_DELETE_FORM
- PRINTER_CHANGE_JOB
Notifique as alterações em um trabalho. Você pode definir esse sinalizador geral ou um ou mais dos seguintes sinalizadores específicos:
- PRINTER_CHANGE_ADD_JOB
- PRINTER_CHANGE_SET_JOB
- PRINTER_CHANGE_DELETE_JOB
- PRINTER_CHANGE_WRITE_JOB
- PRINTER_CHANGE_PORT
Notifique as alterações em uma porta. Você pode definir esse sinalizador geral ou um ou mais dos seguintes sinalizadores específicos:
- PRINTER_CHANGE_ADD_PORT
- PRINTER_CHANGE_CONFIGURE_PORT
- PRINTER_CHANGE_DELETE_PORT
- PRINTER_CHANGE_PRINT_PROCESSOR
Notifique as alterações em um processador de impressão. Você pode definir esse sinalizador geral ou um ou mais dos seguintes sinalizadores específicos:
- PRINTER_CHANGE_ADD_PRINT_PROCESSOR
- PRINTER_CHANGE_DELETE_PRINT_PROCESSOR
- PRINTER_CHANGE_PRINTER
Notifique as alterações em uma impressora. Você pode definir esse sinalizador geral ou um ou mais dos seguintes sinalizadores específicos:
- PRINTER_CHANGE_ADD_PRINTER
- PRINTER_CHANGE_SET_PRINTER
- PRINTER_CHANGE_DELETE_PRINTER
- PRINTER_CHANGE_FAILED_CONNECTION_PRINTER
- PRINTER_CHANGE_PRINTER_DRIVER
Notifique as alterações em um driver de impressora. Você pode definir esse sinalizador geral ou um ou mais dos seguintes sinalizadores específicos:
- PRINTER_CHANGE_ADD_PRINTER_DRIVER
- PRINTER_CHANGE_SET_PRINTER_DRIVER
- PRINTER_CHANGE_DELETE_PRINTER_DRIVER
- PRINTER_CHANGE_ALL
Notifique se alguma das alterações anteriores ocorrer. - PRINTER_CHANGE_SERVER
Windows 7: notificar quaisquer alterações no servidor.
Esse sinalizador não está incluído nas alterações monitoradas definindo o valor PRINTER_CHANGE_ALL .Para obter descrições dos sinalizadores mais específicos na tabela anterior, consulte a função FindNextPrinterChangeNotification .
-
fdwOptions
-
O sinalizador que determina a categoria de impressoras para as quais as notificações funcionarão.
Valor Significado - PRINTER_NOTIFY_CATEGORY_ALL
- 0x001000
FindNextPrinterChangeNotification retorna notificações para impressoras 2D e 3D. - PRINTER_NOTIFY_CATEGORY_3D
- 0x002000
FindNextPrinterChangeNotification retorna notificações somente para impressoras 3D. Quando esse sinalizador for definido como zero (0), FindFirstPrinterChangeNotification só funcionará para impressoras 2D. Esse é o valor padrão.
-
pPrinterNotifyOptions [in, opcional]
-
Um ponteiro para uma estrutura PRINTER_NOTIFY_OPTIONS . O membro pTypes dessa estrutura é uma matriz de uma ou mais estruturas PRINTER_NOTIFY_OPTIONS_TYPE , cada uma especificando um campo de informações da impressora a ser monitorado. Uma notificação de alteração ocorre quando um ou mais dos campos especificados são alterados. Quando ocorre uma alteração, a função FindNextPrinterChangeNotification pode recuperar as novas informações da impressora. Esse parâmetro poderá ser NULL se fdwFilter for diferente de zero.
Para obter uma lista de campos que podem ser monitorados, consulte PRINTER_NOTIFY_OPTIONS_TYPE.
Valor retornado
Se a função for bem-sucedida, o valor retornado será um identificador para um objeto de notificação de alteração associado à impressora ou servidor de impressão especificado.
Se houver falha na função, o valor de retorno será INVALID_HANDLE_VALUE.
Comentários
Observação
Essa é uma função de bloqueio ou síncrona e pode não retornar imediatamente. A rapidez com que essa função retorna depende de fatores de tempo de execução, como status de rede, configuração do servidor de impressão e fatores de implementação de driver de impressora que são difíceis de prever ao escrever um aplicativo. Chamar essa função de um thread que gerencia a interação com a interface do usuário pode fazer com que o aplicativo pareça não responder.
Para monitorar uma impressora ou servidor de impressão, chame a função FindFirstPrinterChangeNotification e use o identificador de objeto de notificação de alteração retornado em uma chamada para uma das funções de espera. Uma operação de espera em um objeto de notificação de alteração é atendida quando o objeto de notificação de alteração entra no estado sinalizado. O sistema sinaliza o objeto quando uma ou mais das alterações especificadas por fdwFilter ou pPrinterNotifyOptions ocorrem na impressora monitorada ou no servidor de impressão.
Quando você chama FindFirstPrinterChangeNotification, fdwFilter deve ser diferente de zero ou pPrinterNotifyOptions deve ser não NULL. Se ambos forem especificados, ocorrerão notificações para ambos.
Quando uma operação de espera em um objeto de notificação de alteração de impressora for atendida, chame a função FindNextPrinterChangeNotification para determinar a causa da notificação. Para uma condição especificada por fdwFilter, FindNextPrinterChangeNotification relata a condição ou as condições que foram alteradas. Para um campo de informações de impressora especificado por pPrinterNotifyOptions, FindNextPrinterChangeNotification relata o campo ou os campos que foram alterados, bem como as novas informações para esses campos. FindNextPrinterChangeNotification também redefine o objeto de notificação de alteração para o estado não atribuído para que você possa usá-lo em outra operação de espera para continuar monitorando a impressora ou o servidor de impressão.
Com uma exceção, não chame a função FindNextPrinterChangeNotification se o objeto de notificação de alteração não estiver no estado sinalizado. Se a função de espera retornar o valor WAIT_TIMEOUT, o objeto de alteração não estará no estado sinalizado. Chame a função FindNextPrinterChangeNotification somente se a função de espera for bem-sucedida sem atingir o tempo limite. A exceção é quando FindNextPrinterChangeNotification é chamado com o PRINTER_NOTIFY_OPTIONS_REFRESH bit definido no parâmetro pPrinterNotifyOptions .
Quando você não precisar mais do objeto de notificação de alteração, feche-o chamando a função FindClosePrinterChangeNotification .
Os chamadores de FindFirstPrinterChangeNotification devem garantir que o identificador da impressora passado para FindFirstPrinterChangeNotification permaneça válido até que FindClosePrinterChangeNotification seja chamado. Se o identificador da impressora for fechado antes do identificador de notificação de alteração da impressora, novas notificações não serão entregues.
FindFirstPrinterChangeNotification não enviará notificações de alteração para impressoras 3D para identificadores de servidor.
Observação
No Windows XP com Service Pack 2 (SP2) e posterior, o ICF (Firewall de Conexão com a Internet) bloqueia as portas da impressora por padrão, mas uma exceção para Compartilhamento de Arquivos e Impressão pode ser habilitada. Se um usuário fizer uma conexão de impressora com outro computador e a exceção não estiver habilitada, o usuário não receberá notificações de alteração de impressora do servidor. Um administrador de computador terá que habilitar a exceção.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Biblioteca |
|
DLL |
|