Impressora conectada a uma porta LPT
O enumerador LPT é um exemplo de um motorista de ônibus. O enumerador LPT é capaz de obter informações de identificação do hardware de porta LPT que está em conformidade com o Protocolo de Porta de Recursos Estendidos do IEEE 1284 e o ISA Interface Standard.
Quando um sistema Windows 2000 ou posterior é iniciado, o gerenciador de configurações chama o enumerador LPT para enumerar os dispositivos compatíveis com IEEE 1284 conectados a portas LPT. Para cada dispositivo encontrado, o gerenciador de configurações chama o instalador de classe de impressora. O instalador de classe de impressora chama as funções de instalação do dispositivo com prefixo SetupDi, que obtêm informações de arquivos INF da impressora.
Para uma impressora conectada paralelamente, o enumerador paralelo cria um devnode com uma ID de hardware exclusiva gerada a partir da cadeia de caracteres 1284 que recebe da impressora.
Um exemplo de cadeia de caracteres 1284 é:
"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"
Nessa cadeia de caracteres 1284, o enumerador paralelo produz a seguinte ID de hardware:
LPTENUM\Hewlett-PackardHP_Co3115
A ID de hardware é composta pelo prefixo do enumerador, seguido pelo Nome do Fabricante, o Nome do Modelo e um código crc (redundância cíclica marcar). O código CRC, que são os últimos quatro dígitos da ID de hardware, é gerado a partir das cadeias de caracteres do fabricante e do modelo. Os espaços na cadeia de caracteres são substituídos por sublinhados.
Para ler a cadeia de caracteres de ID 1284 do dispositivo, envie IOCTL_PAR_QUERY_DEVICE_ID. Observe que o spooler redireciona o link simbólico LPTx (em que x é o número LPT 1, 2 ou 3) para o pipe nomeado do spooler, o que significa que, se o spooler estiver em execução, o parport nunca verá as IOCTLs enviadas ao LPTx.
O devnode de uma impressora Plug and Play conectada paralelamente é colocado em HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM e tem uma única ID de hardware do formulário:
LPTENUM\Company_NameModelNam1234
A pilha de driver aparece na figura após o próximo exemplo de código.
O código INF que "conectará e reproduzirá" corretamente uma ID de hardware do formulário LPTENUM\Company_NameModelNam1234 é mostrado no exemplo a seguir. Observe que a descrição do dispositivo "Nome do Modelo XYZ" aparece duas vezes na seção Fabricante do INF. A ID de hardware na primeira linha inclui o enumerador de barramento, enquanto a ID de hardware na segunda linha não. As duas linhas garantem uma correspondência de ID de hardware de classificação 0, independentemente do tipo de barramento no qual a impressora está instalada. Consulte Instalando um driver de impressora de Plug and Play personalizado para obter mais informações.
[Manufacturer]
%Company_Name%=Company_Name
; Section name for all drivers for Company_Name
[Company_Name]
"Model Name XYZ" = Install_Section_XYZ, LPTENUM\Company_NameModelNam1234 ; plus any compatible IDs
"Model Name XYZ" = Install_Section_XYZ, Company_NameModelNam1234 ; plus any compatible IDs
; The install section for the XYZ model
[Install_Section_XYZ]
[Strings]
Company_Name="Company Name"
Para uma impressora que compartilha sua ID do dispositivo com outros modelos, o arquivo INF deve ser semelhante ao seguinte:
[Manufacturer]
%Company_Name%=Company_Name
; The section for all drivers for Company_Name
[Company_Name]
"Model Name XYA" = Install_Section_XYA, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYA" = Install_Section_XYA, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
; The install sections
[Install_Section_XYA]
[Install_Section_XYB]
[ControlFlags]
InteractiveInstall = LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234
[Strings]
Company_Name = "Company Name"
Assim como no exemplo anterior, cada modelo na seção Fabricante do INF é representado por um par de linhas quase idênticas. Para um determinado modelo, uma linha no par inclui o enumerador de barramento; o outro não. As duas linhas garantem uma correspondência de ID de hardware de classificação 0, independentemente do tipo de barramento no qual a impressora está instalada. Consulte Instalando um driver de impressora de Plug and Play personalizado para obter mais informações.