Identificateurs générés par USBPRINT.SYS
À compter de Windows 2000, le système d’exploitation fournit un pilote d’impression USB en mode noyau ,usbprint.sys qui connecte le sous-système de l’imprimante à la pile USB. Le pilote d’imprimante USB natif libère les fournisseurs de la nécessité de développer leurs propres pilotes d’imprimante USB en mode noyau. Cela permet aux fournisseurs de développer des pilotes d’imprimante en mode utilisateur de haut niveau qui fonctionnent à la fois avec des imprimantes USB et parallèles.
Le fichier d’installation usbprint.inf contient un ID compatible qui correspond à tous les périphériques d’imprimante USB de classe 7. Si le pilote de hub USB énumère l’un de ces périphériques, le système d’exploitation trouve une correspondance pour l’ID généré par le pilote de hub dans usbprint.inf et charge le pilote d’imprimante USB ,usbprint.sys. L’ID compatible trouvé dans usbprint.inf se présente sous la forme suivante :
USB\CLASS_07
Où :
- classe 07h = périphériques appartenant à la classe d’imprimante USB
Dès qu’il est chargé, le pilote d’imprimante USB crée un PDO pour le périphérique d’imprimante. Lorsque le gestionnaire Plug-and-Play (PnP) interroge les chaînes d’identification de périphérique du PDO nouvellement créé, le pilote d’imprimante USB crée un NOUVEL ID matériel, dérivé de la chaîne IEEE 1284 de l’appareil qui est compatible avec les identificateurs de chaîne générés par l’énumérateur de bus parallèle. Cet ID matériel a le format suivant :
USBPRINT\NameModel(20)Checksum(4)
Où :
NameModel(20) est la concaténation du nom du fabricant et du modèle de l’appareil, tronqué à un maximum de 20 caractères.
La somme de contrôle(4) est un code de case activée de redondance cyclique (CRC) à 4 caractères calculé à partir du nom du fabricant et du nom du modèle.
Les espaces de la chaîne sont remplacés par des traits de soulignement. Par exemple, si le nom du fabricant est « Hewlett-Packard », que le nom du modèle est « HP Color LaserJet 550 » et que la somme de contrôle est 3115, l’ID matériel est le suivant :
USBPRINT\Hewlett-PackardHP_Co3115
Dans l’exemple précédent, l’espace entre « HP » et « Color » dans le nom du modèle a été remplacé par un trait de soulignement pour produire la chaîne de marque/modèle tronquée « Ctrl-PackardHP_Co ».
Note Le CRC généré par le système d’exploitation peut ne pas correspondre au CRC calculé comme décrit dans la section précédente, ou par tout autre algorithme CRC. Par conséquent, votre pilote d’imprimante peut ne pas être en mesure de calculer le hardwareID approprié à utiliser avec le fichier INF du pilote d’imprimante. Pour récupérer l’ID matériel, il est préférable de rechercher le fichier setupapi.dev.log associé à l’imprimante USB en cours d’installation.