V4-Treiber-Einrichtungskonzepte
Wichtig
Die Modern Print-Plattform ist die von Windows bevorzugte Methode zur Kommunikation mit Druckern. Wir empfehlen die Verwendung des Microsoft IPP-Treibers für die Posteingangsklasse zusammen mit Print Support Apps (PSA), um das Druckverhalten in Windows 10 und 11 für die Entwicklung von Druckergeräten anzupassen.
Weitere Informationen finden Sie unter Modern Print-Plattform und der Anleitung zum Design der Print-Support-App.
Das v4-Druckertreibermodell verwendet ein neues Einrichtungsmodell, um die Benutzerfreundlichkeit zu verbessern und die Supportkosten zu senken.
Der v4-Druckertreiber wird direkt aus dem Driver Store ausgeführt, was die Möglichkeit von Dateikollisionen ausschließt und die Installationsleistung verbessert. Das v4-Setup-Modell verwendet weiterhin INF-Dateien, verwendet aber auch eine neue Manifestdatei, um die druckerspezifischen Setup-Direktiven zu erfassen.
Geräte-Identifikatoren
CompatibleIDS
CompatibleIDs sind ein Schlüsselkonzept für Druckertreiber, da sie es den Treibern ermöglichen, Geräte zu unterstützen, die nach der Veröffentlichung einer neuen Version von Windows freigegeben werden, ohne dass der Treiber aktualisiert werden muss. Dies ist möglich, weil CompatibleIDs es den Geräten ermöglichen, die Unterstützung für einen weniger spezifischen Druckertreiber als eine HardwareID anzukündigen.
Wenn eine bestimmte CompatibleID bereits von einem Druckklassentreiber unterstützt wird, sollten v4-Druckertreiber sie nicht erneut angeben. Falls das Datum eines Druckertreibers neuer ist als das Datum des Druckklassentreibers, wird der Druckertreiber automatisch von der Windows Update-Website heruntergeladen.
Geräte sollten CompatibleIDs in ihrem 1284ID-String enthalten. Wenn ein vorhandener Druckertreiber das Gerät unterstützt, sollte der Druckertreiber diese CompatibleID verwenden. Andernfalls empfehlen wir Ihnen, das folgende Format zu verwenden.
1284_CID_<manufacturer identifier>_<PDL identifier>_device family identifier
Zum Beispiel:
1284_CID_FA_PCL5e_Laser
Wenn CompatibleIDs bereits in vorhandenen Geräten implementiert sind, sollte der Druckertreiber diese CompatibleIDs weiterhin verwenden.
CompatibleIDs werden bei der Installation von TCP/IP-basierten Druckgeräten nicht verwendet. Infolgedessen müssen die Benutzer einen geeigneten Treiber nur anhand des Namens des Treibers identifizieren. Bei Druckklassentreibern empfehlen wir, dass die Hersteller auf ihren Websites Kompatibilitätslisten für alle Geräte bereitstellen, die von einem Druckklassentreiber unterstützt werden. Weitere Informationen zur Implementierung von CompatibleIDs in Ihrer Hardware, einschließlich einer vollständigen Liste von Regeln und Einschränkungen, finden Sie unter So implementieren Sie kompatible IDs in Druckgeräte.
Microsoft unterstützt einige Standard-CompatibleIDs, um verschiedene herstellerneutrale (Standard-)Druckertreiber zu unterstützen. Die folgende Tabelle zeigt diese standardmäßigen CompatibleIDs und die dazugehörigen PDL-Dateitypen.
Dateityp PDL | Standard CompatibleID |
---|---|
XPS | 1284_CID_MS_XPS |
OpenXPS (ECMA-388) | 1284_CID_MS_OXPS |
PCL6 | 1284_CID_MS_PCL6 |
PS | 1284_CID_MS_PS |
Diese Standard-Druckklassentreiber unterstützen nur einen kleinen Teil der Funktionen. Hersteller, die sich für diese Klassentreiber entscheiden, sollten eine erweiterte Treiberkonfiguration implementieren und Bidi verwenden, um weitere spezifische Papierformate und Konfigurationen hinzuzufügen. Die folgende Tabelle zeigt die Funktionen und die dazugehörigen Optionen, die von den Standard-Druckklassentreibern unterstützt werden.
Funktion | Optionen |
---|---|
Papierformat | A4 BRIEF |
Lösung | 300dpi, 600dpi |
Medientyp | Normales Papier |
N-Up | 1, 2, 4, 6, 9, 16 |
PrinterDriverID
Die PrinterDriverID ist eine neue Kennung, mit der die Kompatibilität zwischen Treibern für die gemeinsame Nutzung von Druckern sowie die Kompatibilität zwischen Treibern und Drucker-Erweiterungen bestimmt wird. Wenn der Treiber auf dem Server beispielsweise eine PrinterDriverID in seiner Manifestdatei angibt und der Treiber dann freigegeben wird, suchen Clients, die eine Verbindung zu diesem Drucker herstellen, im lokalen Driver Store und in Windows Update nach einem Treiber, der dieselbe PrinterDriverID in seiner Treiber-INF angibt. Wenn eine Übereinstimmung gefunden wird, wird eine Verbindung über diesen Treiber hergestellt. Die Client-Rechner filtern die Ergebnisse nicht nach dem Treibernamen.
Die PrinterDriverID muss für alle kompatiblen Treiber auf die folgende Weise angegeben werden:
Verwendung der PrinterDriverID-Direktive im v4-Manifest.
Als HardwareID in der INF des v4-Treibers.
Damit zwei verschiedene Treiber dieselbe PrinterDriverID verwenden können, müssen sie für die gemeinsame Nutzung kompatibel sein. Damit die Verbindung immer erfolgreich ist, müssen beide Treiber Folgendes leisten können:
Unterstützen des gleichen PDL
Verwenden der gleichen Art von Konfigurationsdateien (GPD oder PPD)
Müssen in der Lage sein, alle Funktionen oder Optionen wiederzugeben, die in den GPD-, PPD- und/oder Constraint JS-Dateien des Servertreibers angegeben sind.
Unterstützen die gleichen Drucker-Erweiterungen
Der Spooler prüft diese Einschränkungen nicht und verlässt sich ausschließlich auf die PrinterDriverID, um festzustellen, ob zwei Treiber für die gemeinsame Nutzung kompatibel sind. Hersteller müssen sicherstellen, dass sie die PrinterDriverID für einen Treiber ändern, wenn Änderungen an einem der oben genannten Punkte vorgenommen werden.
Drucker-Erweiterungen können auch über PrinterDriverIDs mit Treibern verknüpft werden. Folglich müssen zwei Treiber, die sich eine PrinterDriverID teilen, beide mit denselben Drucker-Erweiterungen arbeiten. Die zuletzt installierte Drucker-Erweiterung überschreibt alle vorherigen Drucker-Erweiterungen für alle Geräte, die die angestrebten PrinterDriverIDs verwenden, sodass sie mit der gleichen Anwendung ordnungsgemäß funktionieren müssen.
Bewährte Praktiken für die Verwendung von GUIDs
GUIDs werden im v4 Druckertreibermodell in großem Umfang verwendet, vor allem in der PrinterDriverID, aber auch in der PrinterExtensionID, der EventID und der ModelID. Sie dienen entweder zur eindeutigen Identifizierung verschiedener Artikel im System oder zur Identifizierung der gleichen Artikel für Servicezwecke, gemeinsame Nutzung usw.
Wenn Sie neue GUIDs erstellen, verwenden Sie immer einen GUID-Generator, wie den in Microsoft Visual Studio oder den im SDK enthaltenen. Manuell erstellte GUIDs und GUIDs, die fälschlicherweise kopiert und eingefügt wurden, sind anfällig für Kollisionen.
Verhalten bei der Einrichtung
Name der Druckwarteschlange
Bei v3-Treibern wurde der Name der Druckwarteschlange zuerst durch den Treibernamen und dann durch den Benutzer festgelegt. Mit der Einführung von Druckklassentreibern ist der Name des Treibers für die Erkennung des Geräts durch den Benutzer viel weniger nützlich. Windows benennt die Warteschlange für alle Plug-and-Play-Geräte, die zur Ausführung eines v4-Druckertreibers installiert sind, automatisch wie folgt um:
Der Name der Druckwarteschlange ist zunächst auf den Namen des Treibers eingestellt.
Wenn es sich bei dem Treiber um einen v4-Druckertreiber handelt, fragt Windows das Gerät mit Bidi ab.
Wenn \Printer.DeviceInfo:FriendlyName angegeben ist, wird dieser Name als neuer Name der Warteschlange verwendet.
Andernfalls wird Windows \Printer.DeviceInfo:Hersteller, \Printer.DeviceInfo:Modellname abfragen.
Wenn beide angegeben werden, verkettet Windows sie zu „Manufacturer Modellname“.
Wenn nur eine dieser Bidi-Abfragen fehlschlägt, verwendet Windows die erfolgreiche Rückgabe der anderen Abfrage als Name der Warteschlange.
Wenn alle Bidi-Abfragen fehlschlagen, verwendet Windows die IEEE 1284ID, um die Hersteller- und Modellnamen zu ermitteln.
Wenn DESCRIPTION oder DES angegeben ist, wird dies als neuer Name der Warteschlange verwendet.
Andernfalls wird Windows nach MANUFACTURER oder MFG und MODEL oder MDL suchen.
Wenn beide angegeben werden, verkettet Windows sie zu „MANUFACTURER MODEL“.
Wenn nur einer dieser Schritte fehlschlägt, verwendet Windows den Wert des anderen Eintrags als Name der Warteschlange.
Assistent zum Hinzufügen von Druckern
Der Name des Treibers wird weiterhin die einzige Kennung sein, die Benutzern zur Verfügung steht, die einen Treiber im Assistenten zum Hinzufügen von Druckern auswählen. TCP/IP-basierte Geräte sollten die Port Monitor MIB (PWG 5107.1-2005) implementieren, um die automatische TCP/IP-Erkennung zu unterstützen. Bestehende Geräte, die über eine Hardware-ID-Zuordnung (HWID) zu einem Druckklassentreiber hinzugefügt werden, können zusätzlich einen gerätespezifischen Modellnamen verwenden.
Ändern von Ports und Umgang mit Drucker-Devnodes
Um eine einheitliche Benutzeroberfläche zu gewährleisten, erhalten alle Druckwarteschlangen einen Software-Geräteknoten (devnode). Auf diese Weise werden Drucker in der Benutzeroberfläche erkannt. Virtuelle Drucker, Verbindungen zu gemeinsam genutzten Druckern und Netzwerkdrucker können auf dieselbe Weise wie Plug & Play-Drucker (PnP) aufgezählt und aufgerufen werden. Die Software-Devnodes für physische PnP-Drucker erben die Eigenschaften von dem PnP-Devnode, der die Erstellung der Warteschlange ausgelöst hat.
Die Benutzeroberfläche gruppiert Devnodes in Device Containern, wenn zwei verschiedene Objekte miteinander verbunden sind. Diese Gruppierung ermöglicht es, dass ein Multifunktionsdrucker (MFP) als ein Symbol im Geräte- und Druckerordner erscheint. Die Container-ID für alle Funktionen in einem MFP muss gleich sein, damit die Funktionen alle unter demselben Symbol erscheinen. Bei PnP-Geräten geschieht dies automatisch.
Wenn Sie den einer Warteschlange zugeordneten Port ändern, ändert sich auch die Container-ID, die dem Devnode der Warteschlange zugeordnet ist. Dies führt dazu, dass die Warteschlange nicht mehr unter demselben Gerätecontainer gruppiert wird wie die übrigen PnP-Objekte für das physische Gerät. Das Betriebssystem verfügt nicht über genügend Informationen, um Situationen zu bereinigen, in denen die Warteschlange und das PnP-Objekt getrennt werden. In einigen Fällen ist das die eigentliche Absicht des Benutzers. Nur der Benutzer oder die Anwendung, der/die den Portnamen ändert, weiß, was das beabsichtigte Ergebnis ist, und es obliegt dem Benutzer/der Anwendung, den verwirrenden Zustand zu bereinigen, der nach der Änderung des Ports einer Warteschlange zurückbleibt. Hier finden Sie zwei Beispielsituationen mit Anleitungen, wie Sie sich richtig verhalten sollten.
IT-Administrator beim Einrichten von Druckern – Ein IT-Administrator verwendet WS Discovery, um einen Drucker im Netzwerk zu finden, und ändert den Port auf TCP/IP, weil er seinen TCP/IP-Verwaltungsprozess mag.
Erwartung – Es gibt nur ein „Gerät“ im Geräte- und Druckerordner.
Lösung – Der IT-Administrator entfernt den WSD PnP Devnode aus dem Geräte- und Druckerordner.
IHV-Setup-Software – Die IHV installiert einen Treiber zusammen mit einem benutzerdefinierten Portmonitor (benutzerdefinierte Portmonitore sind in v4 nicht erlaubt, aber die gleiche Devnode-Behandlung gilt für v3-Treiber). Die IHV ändert den USB-Anschluss der Druckerwarteschlange in einen Anschluss, den der Gerätehersteller erstellt.
Erwartung – Es gibt nur ein „Gerät“ im Geräte- und Druckerordner.
Lösung 1 – Der PnP-Devnode wird weiterhin benötigt: Das Setup-Programm ändert die Container-ID des Warteschlangen-Devnode so, dass sie dem PnP-Objekt entspricht.
Lösung 2 – Der PnP-Devnode ist überflüssig: Das Setup-Programm entfernt das ursprüngliche PnP-Gerät.
Ranking der Treiber
Die Einführung von v4-Druckertreibern ändert nichts am Plug-and-Play-Rankingverhalten. Wenn ein Gerät eingesteckt wird, wird der verfügbare Treiber mit der höchsten Punktzahl ausgewählt. Wenn es sich bei dem ausgewählten Treiber um einen Druckklassentreiber handelt und ein besser bewerteter, passender Treiber auf der Windows Update-Website vorhanden ist, wird der ausgewählte Treiber automatisch ersetzt, wenn der Benutzer das nächste Mal Updates für Windows herunterlädt.
Weitere Informationen zum Treiber-Ranking finden Sie unter Wie Windows Treiber einstuft.
Bewährte Praktiken bei der Einrichtung von Treibern
Verpackung
V4-Druckertreiber verwenden weder die Need- und Include-INF-Datei-Anweisungen noch Core-Treiber-Technologien, um gemeinsame Dateien zu verarbeiten. Folglich müssen v4-Druckertreiber bis auf wenige Ausnahmen in sich geschlossen sein.
V4-Druckertreiber können weiterhin Abhängigkeiten von gemeinsamen Dateien haben, die Windows bereitstellt. Dazu gehören die Dateien in NTPrint.INF oder NTPrint4.INF. Treiber können diese Dateien einbinden, indem sie die RequiredFiles-Direktive in der v4-Manifestdatei angeben.
Wenn es bereits Druckklassentreiber gibt, die grundlegende Rendering-Funktionen für Ihre Geräte oder Ihre PDL bereitstellen, dann gibt es auch einen Mechanismus, um eine Abhängigkeit von dem Klassentreiber zu übernehmen, indem Sie die RequiredClass-Direktive verwenden. Diese Direktive veranlasst Windows, einen Treiber zu erstellen, der sowohl die Dateien des v4-Druckertreibers als auch die des erforderlichen Druckertreibers verwendet. GPD- und PPD-Dateien werden zusammengeführt, wobei die spezifischsten Dateien Vorrang vor weniger spezifischen Dateien haben. Das folgende Diagramm veranschaulicht die Logik, die zum Zusammenführen der GPD/PPD-Dateien verwendet wird, und enthält auch erweiterte Treiberkonfigurationsdateien, die Sie von Bidi erhalten haben. Andere Treiberdateien, wie z. B. JavaScript-Beschränkungen, werden nicht in das Treiberpaket eingebunden.
Drucker Modellreihen
Plug & Play unterhält eine implizite Rangliste aller HardwareIDs und CompatibleIDs einer Modellreihe. Daher empfiehlt Microsoft seinen Partnern, die folgenden bewährten Verfahren anzuwenden, um unvorhersehbare Verhaltensweisen in Bezug auf das Ranking zu vermeiden.
V4 Druckertreiber
V4-Druckertreiber-INFs müssen zwei verschiedene Arten von Modelllinien definieren:
HardwareID Linien: „Treibername“ = INSTALL_SECTION, busenumerator\HardwareID
PrinterDriverID Linien: „Treibername“ = INSTALL_SECTION,{GUID}
V4 Druckertreiber-INFs müssen bus-spezifische HardwareIDs auf einzelnen Linien definieren:
„Treibername“ = INSTALL_SECTION,WSDPRINT\HardwareID
„Treibername“ = INSTALL_SECTION,USBPRINT\HardwareID
„Treibername“ = INSTALL_SECTION,LPTENUM\HardwareID
Treiber für dir Druckerklasse
Die INFs der Druckklassentreiber müssen drei verschiedene Arten von Modelllinien definieren:
HardwareID Linien: „Treibername“ = INSTALL_SECTION,HardwareID
PrinterDriverID Linien: „Treibername“ = INSTALL_SECTION,{GUID}
CompatibleID Linien: „Druckklassentreibername“ = INSTALL_SECTION,,1284_CID_CompatID
Druckklassentreiber-INFs dürfen keine Bus-Enumeratoren definieren (z. B. WSDPRINT)