Compartilhar via


Suporte ao driver de impressora para serviços de diretório de impressora

Os drivers de impressora não são responsáveis por publicar uma fila de impressão nos Serviços de Diretório. A pasta de impressão do Microsoft Windows 2000 e posterior cria um objeto de fila de impressão (chamando a função SetPrinter do spooler ) durante o processo de instalação da impressora.

As propriedades da fila de impressão são publicadas para que um usuário possa pesquisar impressoras com propriedades específicas usando a opção Pesquisar no menu Iniciar da barra de tarefas. A pasta de impressão publica alguns, mas não todos, dos recursos da impressora que estão disponíveis para ela a partir de DriverCapabilities. Somente as funcionalidades consideradas úteis para fins de navegação são publicadas.

Os drivers de impressora podem adicionar ou modificar as informações de propriedade de um objeto de fila de impressão. As propriedades da fila de impressão que podem ser publicadas são identificadas por constantes prefixadas SPLDS_, definidas em winspool.h. Para adicionar ou modificar as propriedades da impressora, o driver deve usar esses identificadores de nome de propriedade predefinidos.

Para adicionar ou modificar as informações de propriedade de um objeto de fila de impressão, execute as seguintes etapas:

  1. Adicione nomes de propriedade e valores ao registro, no SPLDS_DRIVER_KEY, chamando a função SetPrinterDataEx do spooler.

  2. Chame a função SetPrinter do spooler , com uma estrutura de entrada de PRINTER_INFO_7 (descrita na documentação do SDK do Windows) e uma ação de DSPRINT_UPDATE, para informar ao spooler que ele deve atualizar o objeto de fila de impressão publicado. (Os drivers não devem especificar uma ação de DSPRINT_PUBLISH.)

Essas etapas devem ser implementadas na função DrvPrinterEvent do driver de impressora, quando a função recebe um evento PRINTER_EVENT_INITIALIZE.

Se um driver precisar obter os valores atuais para as propriedades publicadas de uma impressora, ele deverá chamar GetPrinterDataEx ou EnumPrinterDataEx para obter as informações do registro, que é mantido pelo spooler e sempre atualizado. Uma maneira alternativa é chamar GetPrinter para obter o identificador de objeto da fila de impressão e, em seguida, chamar funções ADSI para obter os valores das propriedades publicadas. Essa técnica não é recomendada, tanto porque é mais intensiva em recursos quanto porque os dados retornados podem nem sempre ser atuais.