Freigeben über


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"

Plug and Play für Parallelportdrucker.

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.