Partager via


Imprimante connectée à un port LPT

L’énumérateur LPT est un exemple de pilote de bus. L’énumérateur LPT est capable d’obtenir des informations d’identification à partir du matériel de port LPT conforme au protocole ieee 1284 Extended Capabilities Port Protocol et à la norme d’interface ISA.

Lorsqu’un système Windows 2000 ou version ultérieure démarre, le gestionnaire de configuration appelle l’énumérateur LPT pour énumérer les appareils compatibles IEEE 1284 connectés aux ports LPT. Pour chaque appareil trouvé, le gestionnaire de configuration appelle le programme d’installation de la classe d’imprimante. Le programme d’installation de la classe d’imprimante appelle les fonctions d’installation de périphérique avec préfixe SetupDi, qui obtiennent des informations à partir des fichiers INF de l’imprimante.

Pour une imprimante connectée en parallèle, l’énumérateur parallèle crée un devnode avec un ID matériel unique généré à partir de la chaîne 1284 qu’il reçoit de l’imprimante.

Voici un exemple de chaîne 1284 :

"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"

À partir de cette chaîne 1284, l’énumérateur parallèle produit l’ID matériel suivant :

LPTENUM\Hewlett-PackardHP_Co3115

L’ID matériel est constitué du préfixe de l’énumérateur, suivi du nom du fabricant, du nom du modèle et d’un code de case activée de redondance cyclique (CRC). Le code CRC, qui correspond aux quatre derniers chiffres de l’ID matériel, est généré à partir des chaînes du fabricant et du modèle. Les espaces de la chaîne sont remplacés par des traits de soulignement.

Pour lire la chaîne d’ID 1284 à partir de l’appareil, envoyez IOCTL_PAR_QUERY_DEVICE_ID. Notez que le spouleur redirige le lien symbolique LPTx (où x est le numéro LPT 1, 2 ou 3) vers le canal nommé du spouleur, ce qui signifie que si le spouleur est en cours d’exécution, le parport ne voit jamais les IOCTL envoyés à LPTx.

Le devnode d’une imprimante Plug-and-Play connectée en parallèle est placé sous HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM et a un ID matériel unique au format :

LPTENUM\Company_NameModelNam1234

La pile de pilotes apparaît dans la figure qui suit l’exemple de code suivant.

Le code INF qui « plug-and-play » correctement un ID matériel au format LPTENUM\Company_NameModelNam1234 est illustré dans l’exemple suivant. Notez que la description de l’appareil « Nom du modèle XYZ » s’affiche deux fois dans la section Fabricant INF. L’ID matériel de la première ligne inclut l’énumérateur de bus, contrairement à l’ID matériel de la deuxième ligne. Les deux lignes garantissent une correspondance d’ID matériel de rang 0, quel que soit le type de bus sur lequel l’imprimante est installée. Pour plus d’informations, consultez Installation d’un pilote d’imprimante Plug-and-Play personnalisé.

[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"

plug-and-play pour les imprimantes à port parallèle.

Pour une imprimante qui partage son ID d’appareil avec d’autres modèles, le fichier INF doit ressembler à ce qui suit :

[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"

Comme dans l’exemple précédent, chaque modèle de la section Inf Manufacturer est représenté par une paire de lignes presque identiques. Pour un modèle donné, une ligne de la paire comprend l’énumérateur de bus ; l’autre ne le fait pas. Les deux lignes garantissent une correspondance d’ID matériel de rang 0, quel que soit le type de bus sur lequel l’imprimante est installée. Pour plus d’informations, consultez Installation d’un pilote d’imprimante Plug-and-Play personnalisé.