Isolierung des Druckertreibers
Wichtig
Die moderne Druckplattform ist das bevorzugte Mittel von Windows, um mit Druckern zu kommunizieren. 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 Moderne Druckplattform und im Entwurfsleitfaden für die Druckunterstützungs-App.
Die Druckertreiberisolierung verbessert die Zuverlässigkeit des Windows-Druckdienstes, indem Druckertreiber in Prozessen ausgeführt werden können, die von dem Prozess, in dem der Druckspooler läuft, getrennt sind.
Die Unterstützung für die Druckertreiberisolierung ist in Windows 7, Windows Server 2008 R2 und späteren Betriebssystemen implementiert.
Ab Windows 7 und Windows Server 2008 R2 muss ein Inbox-Druckertreiber die Druckertreiberisolierung unterstützen und in einem isolierten Prozess ausgeführt werden können.
In früheren Versionen von Windows wurden die Druckertreiber immer im selben Prozess wie der Spooler ausgeführt. Zu den Druckertreiberkomponenten, die im Spooler-Prozess liefen, gehörten die folgenden:
Druckertreiber-Konfigurationsmodule
Druckprozessoren
Rendering-Module
Der Ausfall einer einzelnen Druckertreiberkomponente kann zu einem Ausfall des Druck-Subsystems führen, wodurch die Druckvorgänge für alle Benutzer und für alle Druckkomponenten gestoppt werden.
Ab Windows 7 und Windows Server 2008 R2 kann ein Administrator optional einen Druckertreiber so konfigurieren, dass er in einem isolierten Prozess ausgeführt wird - einem Prozess, der vom Spooler-Prozess getrennt ist. Indem er den Treiber isoliert, kann der Administrator verhindern, dass ein Fehler in einer Treiberkomponente den Druckdienst zum Stillstand bringt.
Weitere Informationen über die Spooler-Funktionen finden Sie unter Funktionen und Strukturen der Spooler-Komponenten.
Unterstützung der Treiberisolierung in INF-Dateien
Wenn die INF-Datei, mit der ein Druckertreiber installiert wird, nicht angibt, dass der Treiber die Treiberisolierung unterstützt, konfiguriert das Installationsprogramm der Druckerklasse den Treiber standardmäßig so, dass er im Spooler-Prozess ausgeführt wird. Wenn die INF-Datei jedoch angibt, dass der Treiber die Treiberisolierung unterstützt, konfiguriert das Installationsprogramm den Treiber so, dass er in einem isolierten Prozess ausgeführt wird. Ein Administrator kann diese Konfigurationseinstellungen außer Kraft setzen und für jeden Treiber festlegen, ob der Treiber im Spooler-Prozess oder in einem isolierten Prozess ausgeführt werden soll.
Um die Treiberisolierung zu unterstützen, kann die INF-Datei, die einen Druckertreiber installiert, das Schlüsselwort DriverIsolation verwenden, um anzugeben, ob der Treiber die Druckertreiberisolierung unterstützt. Die Einstellung DriverIsolation=2 bedeutet, dass der Treiber die Treiberisolierung unterstützt. Die Einstellung DriverIsolation=0 bedeutet, dass der Treiber keine Treiberisolierung unterstützt. Das Weglassen des Schlüsselworts DriverIsolation in der INF-Datei hat die gleiche Wirkung wie die Einstellung DriverIsolation=0.
Spooler-Funktionen für Treiber-Isolationseinstellungen
Die folgende Tabelle zeigt die Spooler-Funktionen, die ein Administrator verwenden kann, um die Einstellungen für die Treiberisolierung zu konfigurieren.
Funktionsname | Vorgang |
---|---|
GetPrinterDataEx | Rufen Sie die Einstellungen für die Treiberisolierung eines Druckers ab. |
SetPrinterDataEx | Legen Sie die Einstellungen für die Treiberisolierung für einen Drucker fest. |
EnumPrinterDataEx | Auflistung der Einstellungen für die Treiberisolierung eines Druckers. |
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification | Benachrichtigungen über Änderungen an den Einstellungen zur Treiberisolierung für einen Drucker anfordern. |
Das Format für die Daten ist wie folgt:
Fahrer in jeder Gruppe werden durch '\' getrennt.
Jede Treibergruppe wird durch '\\' getrennt.
Die erste Gruppe lädt den Treiber in die Spooler-Prozesse. Jede nachfolgende Gruppe lädt die Treiber in isolierten Prozessen pro Gruppe. Die zweite Gruppe wird als 'gemeinsame' Gruppe betrachtet, in der andere isolationsfähige Treiber standardmäßig geladen werden.
Konfigurieren des Treiberisolationsmodus über die Verwaltung
Ein Computeradministrator kann die Windows-Druckverwaltungskonsole verwenden oder die Windows-Spooler-Funktionen aufrufen, um die Einstellungen für die Treiberisolierung für jeden auf einem Computer installierten Druckertreiber zu konfigurieren. Der Administrator konfiguriert den Treiber so, dass er eine der in der folgenden Tabelle aufgeführten Einstellungen verwendet.
Treiber-Isolationsmodus | Bedeutung |
---|---|
Shared | Führen Sie den Treiber in einem Prozess aus, der mit anderen Druckertreibern gemeinsam genutzt wird, aber vom Spooler-Prozess getrennt ist. |
Isolated | Führen Sie den Treiber in einem Prozess aus, der vom Spooler-Prozess getrennt ist und nicht mit anderen Druckertreibern geteilt wird. |
Keine | Führen Sie den Treiber im Spooler-Prozess aus. |
Idealerweise ist ein Druckertreiber in der Lage, im gemeinsamen Modus zu laufen. Das heißt, er wird in einem isolierten Prozess ausgeführt, der gemeinsam mit anderen Druckertreibern, aber getrennt vom Spooler-Prozess läuft. Ein Treiber muss möglicherweise im isolierten Modus laufen, wenn er in einem vom Spooler-Prozess getrennten Prozess laufen kann, aber Schwierigkeiten hat, den Prozess mit anderen Treibern zu teilen. Ein schlecht konzipierter Treiber könnte beispielsweise Dateinamen haben, die mit denen verwandter Treiber oder verschiedener Versionen desselben Treibers kollidieren, oder der Treiber könnte häufig Fehler aufweisen oder ein Speicherleck haben, das den Betrieb anderer Treiber, die im selben Prozess laufen, beeinträchtigt.
Um die Fehlersuche zu unterstützen, kann der Domänenadministrator die Treiberisolierungsfunktion auf einem Computer in der Domäne deaktivieren oder er kann alle Druckertreiber auf dem Computer zwingen, im isolierten Modus zu laufen. Im isolierten Modus muss jeder Treiber in einem vom Spooler und von den anderen Druckertreibern getrennten Prozess laufen.
Wenn die Treiberisolierung per Gruppenrichtlinie deaktiviert ist, ist die Isolierung für alle Druckertreiber ausgeschaltet. Wenn die Isolierung aktiviert ist, werden die einzelnen Treiber auf ihren Modus hin überprüft. Wenn für einen Treiber der Isolationsmodus eingestellt ist, läuft er je nach Registrierungseintrag im gemeinsamen, isolierten oder keinem Modus. Wenn für den Treiber jedoch kein Isolationsmodus eingestellt ist und er mit der Isolation kompatibel ist, läuft er im gemeinsamen Modus. Wenn der Treiber nicht mit dem Modus kompatibel ist, bestimmt die Überschreibung der Gruppenrichtlinie, ob der Treiber im gemeinsamen Modus oder im Nicht-Modus läuft.
Die folgende Tabelle zeigt eine Entscheidungshilfe für die Wahl des Treiberisolierungsmodus:
Spooler-Funktionen, die unter Treiberisolierung erlaubt sind
Nur bestimmte Funktionen sind unter der Treiberisolation erlaubt.
Spoolss.dll Funktionen
Die folgenden Funktionen werden von spoolss.dll exportiert und sind für Spooler-Plugins verfügbar, indem sie mit spoolss.lib verknüpft werden.
WinSpool.drv Funktionen
Die folgenden Funktionen werden von winspool.drv exportiert und sind für Spooler-Plugins verfügbar, indem sie mit Winspool.h verknüpft werden.