Drucker, der an einen LPT-Anschluss angeschlossen ist
Der LPT-Enumerator ist ein Beispiel für einen Bustreiber. Der LPT-Enumerator kann Identifikationsinformationen von LPT-Porthardware abrufen, die dem IEEE 1284 Extended Capabilities Port Protocol und dem ISA-Schnittstellenstandard entspricht.
Wenn ein Windows 2000- oder höher-System gestartet wird, ruft der Konfigurations-Manager den LPT-Enumerator auf, um die IEEE 1284-kompatiblen Geräte aufzulisten, die mit LPT-Ports verbunden sind. Für jedes gefundene Gerät ruft der Konfigurations-Manager das Druckerklasseninstallationsprogramm auf. Das Druckerklasseninstallationsprogramm ruft SetupDi-präfixierte Geräteinstallationsfunktionen auf, die Informationen aus Drucker-INF-Dateien abrufen.
Für einen parallel verbundenen Drucker erstellt der parallele Enumerator einen Devnode mit einer eindeutigen Hardware-ID , die aus der Zeichenfolge 1284 generiert wird, die er vom Drucker empfängt.
Eine Beispielzeichenfolge mit 1284 ist:
"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"
Aus dieser Zeichenfolge 1284 erzeugt der parallele Enumerator die folgende Hardware-ID:
LPTENUM\Hewlett-PackardHP_Co3115
Die Hardware-ID besteht aus dem Enumeratorpräfix, gefolgt vom Herstellernamen, dem Modellnamen und einem CRC-Code (cyclic Redundanzprüfung). Der CRC-Code, bei dem es sich um die letzten vier Ziffern der Hardware-ID handelt, wird von den Hersteller- und Modellzeichenfolgen generiert. Leerzeichen in der Zeichenfolge werden durch Unterstriche ersetzt.
Um die Zeichenfolge 1284 ID vom Gerät zu lesen, senden Sie IOCTL_PAR_QUERY_DEVICE_ID. Beachten Sie, dass der Spooler den symbolischen LPTx-Link (wobei x die LPT-Nummer 1, 2 oder 3 ist) an die benannte Pipe des Spoolers umleitet. Dies bedeutet, dass Parport die an LPTx gesendeten IOCTLs nie sieht, wenn der Spooler ausgeführt wird.
Der Devnode für einen parallel verbundenen Plug & Play-Drucker befindet sich unter HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM und weist eine einzelne Hardware-ID der Form auf:
LPTENUM\Company_NameModelNam1234
Der Treiberstapel wird in der Abbildung nach dem nächsten Codebeispiel angezeigt.
Der INF-Code, mit dem eine Hardware-ID der Form LPTENUM\Company_NameModelNam1234 ordnungsgemäß "plug and play" ausgeführt wird, wird im folgenden Beispiel gezeigt. Beachten Sie, dass die Gerätebeschreibung "Modellname XYZ" zweimal im Abschnitt INF-Hersteller angezeigt wird. Die Hardware-ID in der ersten Zeile enthält den Bus-Enumerator, während die Hardware-ID in der zweiten Zeile dies nicht tut. Die beiden Zeilen garantieren eine Übereinstimmung mit der Hardware-ID "Rang 0", unabhängig vom Typ des Busses, auf dem der Drucker installiert ist. Weitere Informationen finden Sie unter Installieren eines benutzerdefinierten Plug & Play Druckertreibers.
[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"
Für einen Drucker, der seine Geräte-ID mit anderen Modellen teilt, sollte die INF-Datei wie folgt aussehen:
[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"
Genau wie im vorherigen Beispiel wird jedes Modell im Abschnitt INF-Hersteller durch ein Paar fast identischer Linien dargestellt. Für ein bestimmtes Modell enthält eine Zeile im Paar den Bus-Enumerator. der andere nicht. Die beiden Zeilen garantieren eine Übereinstimmung mit der Hardware-ID "Rang 0", unabhängig vom Typ des Busses, auf dem der Drucker installiert ist. Weitere Informationen finden Sie unter Installieren eines benutzerdefinierten Plug & Play Druckertreibers.