Conceitos de configuração do driver V4
Importante
A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
O modelo de driver de impressão v4 usa um novo modelo de configuração para melhorar a experiência do usuário e reduzir os custos de suporte.
O driver de impressão v4 é executado diretamente do Repositório de Driver, o que elimina a possibilidade de colisões de arquivos e melhora o desempenho da instalação. O modelo de instalação v4 continua a usar arquivos INF, mas também emprega um novo arquivo de manifesto para capturar as diretivas de instalação específicas da impressora.
identificadores do dispositivo
CompatibleIDS
CompatibleIDs são um conceito-chave para drivers de classe de impressão porque permitem que os drivers ofereçam suporte a dispositivos lançados após o lançamento de uma nova versão do Windows, sem a necessidade de atualizar o driver. Isso é possível porque CompatibleIDs permitem que os dispositivos anunciem suporte para um driver de impressão menos específico do que um HardwareID.
Se um determinado CompatibleID já tiver suporte de um driver de classe de impressão, os drivers de impressão v4 não deverão especificá-lo novamente. Se a data de um driver de impressão for mais recente que a data do driver de classe de impressão, o driver de impressão será baixado automaticamente do site Windows Update.
Os dispositivos devem incluir CompatibleIDs em sua cadeia de caracteres 1284ID. Se um driver de classe de impressão existente der suporte ao dispositivo, o driver de impressão deverá usar esse CompatibleID, caso contrário, recomendamos que você use o formato a seguir.
1284_CID_<manufacturer identifier>_<PDL identifier>_device family identifier
Por exemplo:
1284_CID_FA_PCL5e_Laser
Se CompatibleIDs já estiverem implementados em dispositivos existentes, o driver de impressão deverá continuar a usar esses CompatibleIDs.
CompatibleIDs não são usados na instalação de dispositivos de impressão baseados em TCP/IP. Como resultado, os usuários precisarão identificar um driver apropriado usando apenas o nome do driver. No que diz respeito aos drivers de classe de impressão, recomendamos que os fabricantes forneçam listas de compatibilidade em seus sites para todos os dispositivos compatíveis com um driver de classe de impressão. Para obter mais informações sobre como implementar CompatibleIDs em seu hardware, incluindo uma lista completa de regras e restrições, consulte Como implementar IDs compatíveis em dispositivos de impressão.
A Microsoft dá suporte a alguns CompatibleIDs padrão para dar suporte a vários drivers de classe de impressão neutros do fabricante (padrão). A tabela a seguir mostra esses CompatibleIDs padrão e seus tipos de arquivo PDL associados.
Tipo de arquivo PDL | CompatibleID padrão |
---|---|
XPS | 1284_CID_MS_XPS |
OpenXPS (ECMA-388) | 1284_CID_MS_OXPS |
PCL6 | 1284_CID_MS_PCL6 |
PS | 1284_CID_MS_PS |
Esses drivers de classe de impressão padrão dão suporte apenas a um pequeno conjunto de recursos, portanto, os fabricantes que optam por utilizar esses drivers de classe devem implementar a configuração aprimorada do driver, usando Bidi para adicionar tamanhos e configurações de papel mais específicos. A tabela a seguir mostra os recursos e as opções associadas com suporte pelos drivers de classe de impressão padrão.
Recurso | Opções |
---|---|
Tamanho do papel | Letter, A4 |
Resolução | 300dpi, 600dpi |
Tipo de mídia | Papel comum |
N-Up | 1, 2, 4, 6, 9, 16 |
PrinterDriverID
O PrinterDriverID é um novo identificador usado para determinar a compatibilidade entre drivers para compartilhamento de impressora, bem como a compatibilidade entre drivers e extensões de impressora. Por exemplo, se o driver no servidor especificar um PrinterDriverID em seu arquivo de manifesto e o driver for compartilhado, os clientes que se conectarem a essa impressora pesquisarão o Repositório de Driver local e o Windows Update em busca de um driver que especifique o mesmo PrinterDriverID em seu INF de driver. Se uma correspondência for encontrada, uma conexão será feita usando esse driver. Os computadores cliente não filtram os resultados correspondentes usando o nome do driver.
PrinterDriverID deve ser especificado para todos os drivers compatíveis das seguintes maneiras:
Usando a diretiva PrinterDriverID no manifesto v4.
Como um HardwareID no INF do driver v4.
Para que dois drivers diferentes compartilhem o mesmo PrinterDriverID, eles devem ser compatíveis para compartilhamento. Para que a conexão seja sempre bem-sucedida, os dois drivers devem ser capazes de fazer o seguinte:
Suporta o mesmo PDL
Use o mesmo tipo de arquivos de configuração (GPD ou PPD)
Ser capaz de renderizar quaisquer recursos ou opções especificados nos arquivos JS GPD, PPD e/ou restrição do driver do servidor
Suporta as mesmas extensões de impressora
O spooler não valida essas limitações e depende exclusivamente do PrinterDriverID para indicar se dois drivers são compatíveis para compartilhamento. Os fabricantes devem certificar-se de alterar o PrinterDriverID de um driver se forem feitas alterações em qualquer um dos itens acima.
As extensões de impressora também podem ser associadas a drivers por meio de PrinterDriverIDs. Como resultado, dois drivers que compartilham um PrinterDriverID devem funcionar com as mesmas extensões de impressora. A última extensão de impressora instalada substituirá todas as extensões de impressora anteriores para todos os dispositivos usando os PrinterDriverIDs de destino, portanto, eles devem funcionar corretamente usando o mesmo aplicativo.
Práticas recomendadas para o uso de GUIDs
Os GUIDs são usados amplamente por meio do modelo de driver de impressão v4, principalmente no PrinterDriverID e também no PrinterExtensionID, no EventID e no ModelID. Eles são usados para identificar exclusivamente diferentes itens no sistema ou para identificá-los como iguais para fins de manutenção, compartilhamento, etc.
Ao criar novos GUIDs, sempre use um gerador de GUID, como o incluído no Microsoft Visual Studio ou o incluído no SDK. GUIDs criados manualmente e GUIDs que foram copiados e colados erroneamente são propensos a colisões.
Comportamentos de configuração
Nome da fila de impressão
Para drivers v3, o nome da fila de impressão foi ditado primeiro pelo nome do driver e, em seguida, pelo usuário. Com a introdução de drivers de classe de impressão, o nome do driver é muito menos útil para o reconhecimento do usuário do dispositivo. O Windows renomeará a fila automaticamente para todos os dispositivos Plug and Play instalados para executar um driver de impressão v4 da seguinte maneira:
Inicialmente, o nome da fila de impressão é definido como o nome do driver.
Se o driver for um driver de impressão v4, o Windows consultará o dispositivo usando Bidi.
Se \Printer.DeviceInfo:FriendlyName for especificado, ele será usado como o novo nome da fila.
Caso contrário, o Windows consultará \Printer.DeviceInfo:Manufacturer, \Printer.DeviceInfo:ModelName.
Se ambos forem especificados, o Windows os concatenará em "Manufacturer ModelName".
Se apenas uma dessas consultas Bidi falhar, o Windows usará o retorno bem-sucedido da outra consulta como o nome da fila.
Se todas as consultas Bidi falharem, o Windows usará o IEEE 1284ID para determinar os nomes do fabricante e do modelo.
Se DESCRIPTION ou DES for especificado, ele será usado como o novo nome da fila.
Caso contrário, o Windows pesquisará MANUFACTURER ou MFG e MODEL ou MDL.
Se ambos forem especificados, o Windows os concatenará em "MANUFACTURER MODEL".
Se apenas um deles falhar, o Windows usará o valor da outra chave como o nome da fila.
O Assistente para Adicionar Impressora
O nome do driver continuará a ser o único identificador disponível para os usuários que escolherem um driver no Assistente para Adicionar Impressora. Os dispositivos baseados em TCP/IP devem implementar o Port Monitor MIB (PWG 5107.1-2005) para suportar a detecção automática de TCP/IP. Os dispositivos existentes adicionados a um driver de classe de impressão usando um mapeamento de HWID (ID de hardware) também podem usar um nome de modelo específico do dispositivo.
Alterando portas e lidando com devnodes de impressora
Para fornecer uma experiência de interface do usuário consistente, todas as filas de impressão recebem um nó de dispositivo de software (devnode). É assim que as impressoras são descobertas na interface do usuário e permite que impressoras virtuais, conexões com impressoras compartilhadas e impressoras de rede sejam enumeradas e acessadas da mesma forma que as impressoras Plug and Play (PnP). Os devnodes de software para impressoras PnP físicas herdarão propriedades do devnode PnP que disparou a criação da fila.
A interface do usuário agrupará devnodes em contêineres de dispositivo quando dois objetos diferentes estiverem relacionados. Esse agrupamento é o que permite que uma impressora multifuncional (MFP) apareça como um ícone na pasta Dispositivos e Impressoras. A ID do contêiner para todas as funções em um MFP deve ser a mesma para que todas as funções apareçam no mesmo ícone. Isso é feito automaticamente por dispositivos PnP.
Alterar a porta associada a uma fila alterará a ID do contêiner associada ao devnode da fila. Isso fará com que a fila não seja mais agrupada no mesmo contêiner de dispositivo que o restante dos objetos PnP para o dispositivo físico. Não há informações suficientes no sistema operacional para limpar adequadamente as situações em que a fila e o objeto PnP são separados. Em alguns casos, essa é a intenção real do usuário. Somente o usuário ou aplicativo que altera o nome da porta sabe qual é o resultado pretendido e cabe ao usuário/aplicativo limpar qualquer estado confuso deixado para trás depois que a porta de uma fila é alterada. Aqui estão dois exemplos de situações, com instruções mostrando como limpar adequadamente.
Administrador de TI configurando impressoras – Um administrador de TI usa o WS Discovery para localizar uma impressora na rede e altera a porta para TCP/IP porque gosta do processo de gerenciamento de TCP/IP.
Expectativa – Há apenas um "dispositivo" na pasta de dispositivos e impressoras.
Solução – O administrador de TI remove o devnode PnP do WSD da pasta dispositivos e impressoras.
Software de configuração do IHV – o IHV instala um driver junto com um monitor de porta personalizado (monitores de porta personalizados não são permitidos na v4, mas o mesmo tratamento de devnode se aplica aos drivers v3). O IHV altera a porta USB da fila de impressão para uma porta criada pelo fabricante do dispositivo.
Expectativa – Há apenas um "dispositivo" na pasta de dispositivos e impressoras.
Solução 1 – O devnode PnP ainda é necessário: O programa de instalação altera a ID do contêiner do devnode da fila para corresponder ao objeto PnP.
Solução 2 – O devnode PnP é estranho: O programa de instalação remove o dispositivo PnP original.
Classificação de drivers
A introdução de drivers de impressão v4 não modifica o comportamento de classificação Plug and Play. Quando um dispositivo é conectado, o driver disponível com a pontuação mais alta será selecionado. Se o driver selecionado for um driver de classe de impressão e houver um driver correspondente melhor classificado no site do Windows Update, o driver selecionado será substituído automaticamente na próxima vez que o usuário baixar atualizações para o Windows.
Para obter mais informações sobre a classificação do driver, consulte Como o Windows classifica os drivers.
Práticas recomendadas de configuração de driver
Embalagem
Os drivers de impressão V4 não empregam as necessidades e incluem diretivas de arquivo INF ou tecnologias de driver principais para lidar com arquivos compartilhados. Como resultado, os drivers de impressão v4 devem ser independentes, com apenas algumas exceções.
Os drivers de impressão V4 podem continuar a ter dependências de arquivos comuns fornecidos pelo Windows. Isso inclui os arquivos em NTPrint.INF ou NTPrint4.INF. Os drivers podem incluir esses arquivos especificando a diretiva RequiredFiles no arquivo de manifesto v4.
Se houver drivers de classe de impressão existentes que forneçam funcionalidade básica de renderização para seus dispositivos ou PDL, também existirá um mecanismo para assumir uma dependência do driver de classe usando a diretiva RequiredClass. Essa diretiva faz com que Windows crie um driver usando os arquivos do driver de impressão v4 e do driver de classe de impressão necessário. Os arquivos GPD e PPD são mesclados, com os arquivos mais específicos tendo precedência sobre os arquivos menos específicos. O diagrama a seguir ilustra a lógica usada para mesclar os arquivos GPD/PPD e também inclui arquivos de configuração de driver aprimorados obtidos do Bidi. Outros arquivos de driver, como restrições JavaScript, não são mesclados no pacote de driver.
Linhas de modelo de impressora
O Plug and Play mantém uma classificação implícita de todos os HardwareIDs e CompatibleIDs em uma linha de modelo. Como resultado, a Microsoft recomenda que os parceiros usem as práticas recomendadas a seguir para evitar comportamentos imprevisíveis em relação à classificação.
Driver de impressão V4
Os INFs do driver de impressão V4 devem definir dois tipos diferentes de linhas de modelo:
Linhas HardwareID: "Nome do driver" = INSTALL_SECTION, busenumerator\HardwareID
Linhas PrinterDriverID: "Nome do driver" = INSTALL_SECTION,{GUID}
Os INFs do driver de impressão V4 devem definir HardwareIDs específicos do barramento em linhas individuais:
"Nome do driver" = INSTALL_SECTION,WSDPRINT\HardwareID
"Nome do driver" = INSTALL_SECTION,USBPRINT\HardwareID
"Nome do driver" = INSTALL_SECTION,LPTENUM\HardwareID
Driver de classe de impressão
Os INFs do driver de classe de impressão devem definir três tipos diferentes de linhas de modelo:
Linhas HardwareID: "Nome do driver" = INSTALL_SECTION,HardwareID
Linhas PrinterDriverID: "Nome do driver" = INSTALL_SECTION,{GUID}
Linhas CompatibleID: "Nome do driver da classe de impressão" = INSTALL_SECTION,,1284_CID_CompatID
Os INFs do driver de classe de impressão não devem definir nenhum enumerador de barramento (por exemplo, WSDPRINT)
Tópicos relacionados
Como implementar IDs compatíveis em dispositivos de impressão