Partilhar via


Identificadores gerados por USBPRINT.SYS

A partir do Windows 2000, o sistema operativo fornece um driver de impressão USB em modo kernel, usbprint.sys que conecta o subsistema da impressora à pilha USB. O driver de impressora USB nativo libera os fornecedores da necessidade de desenvolver seus próprios drivers de impressora USB de modo kernel. Isso permite que os fornecedores desenvolvam drivers de impressora de modo de usuário de alto nível que funcionam com impressoras USB e paralelas.

O ficheiro de instalação usbprint.inf contém um ID compatível que corresponde a todos os dispositivos de impressora USB classe 7. Se o driver do hub USB enumerar um desses dispositivos, o sistema operacional encontrará uma correspondência para o ID que o driver do hub gera em usbprint.inf e carregará o driver de impressora USB, usbprint.sys. O ID compatível encontrado em usbprint.inf tem a seguinte forma:

USB\CLASS_07

Onde:

  • classe 07h = dispositivos que pertencem à classe de impressora USB

Assim que é carregado, o driver de impressora USB cria um novo PDO para a impressora. Quando o gerenciador Plug and Play (PnP) consulta as cadeias de caracteres de identificação de dispositivo do PDO recém-criado, o driver de impressora USB cria uma nova ID de hardware, derivada da cadeia de caracteres IEEE 1284 do dispositivo que é compatível com os identificadores de cadeia de caracteres gerados pelo enumerador de barramento paralelo. Este ID de hardware tem o seguinte formato:

USBPRINT\NameModel(20)Checksum(4)

Onde:

  • NameModel(20) é a concatenação do nome do fabricante e do modelo do dispositivo, truncado até um máximo de 20 caracteres.

  • Checksum(4) é um código de verificação de redundância cíclica (CRC) de 4 caracteres calculado a partir do nome do fabricante e do nome do modelo.

Os espaços na cadeia de caracteres são substituídos por sublinhados. Por exemplo, se o nome do fabricante for "Hewlett-Packard", o nome do modelo for "HP Color LaserJet 550" e a soma de verificação for 3115, o ID do hardware será o seguinte:

USBPRINT\Hewlett-PackardHP_Co3115

No exemplo anterior, o espaço entre "HP" e "Color" no nome do modelo foi substituído por um sublinhado para produzir a string truncada de marca e modelo "Hewlett-PackardHP_Co".

Observação O CRC gerado pelo sistema operacional pode não corresponder ao CRC calculado conforme descrito na seção anterior ou por qualquer outro algoritmo de CRC. Como resultado disso, o driver da impressora pode não ser capaz de calcular o hardwareID correto para usar com o arquivo INF para o driver de impressora. Para recuperar o hardwareID, é melhor pesquisar o arquivo de setupapi.dev.log associado à impressora USB que está sendo instalada.