Druckertreiberisolation

Wichtig

Es wird empfohlen, den IPP-Posteingangsklassentreiber von Microsoft zusammen mit Druckunterstützungs-Apps (PSA) zu verwenden, um die Druckoberfläche in Windows 10 und 11 für die Druckergeräteentwicklung anzupassen.

Weitere Informationen finden Sie im Designhandbuch für Druckunterstützungs-Apps.

Die Druckertreiberisolation verbessert die Zuverlässigkeit des Windows-Druckdiensts, indem Druckertreiber in Prozessen ausgeführt werden können, die von dem Prozess getrennt sind, in dem der Druckspooler ausgeführt wird.

Die Unterstützung für die Druckertreiberisolation ist in Windows 7, Windows Server 2008 R2 und höher implementiert.

Ab Windows 7 und Windows Server 2008 R2 muss ein Posteingangsdruckertreiber die Druckertreiberisolation unterstützen und in einem isolierten Prozess ausgeführt werden können.

In früheren Versionen von Windows wurden Druckertreiber immer im selben Prozess wie der Spooler ausgeführt. Zu den Druckertreiberkomponenten, die im Spoolerprozess ausgeführt wurden, gehörten folgendes:

  • Drucktreiberkonfigurationsmodule

  • Druckprozessoren

  • Renderingmodule

Der Ausfall einer einzelnen Drucktreiberkomponente kann dazu führen, dass das Drucksubsystem fehlschlägt und Druckvorgänge für alle Benutzer und für alle Druckkomponenten angehalten 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 Spoolerprozess getrennt ist. Durch Isolieren des Treibers kann der Administrator verhindern, dass ein Fehler in einer Treiberkomponente den Druckdienst anhält.

Weitere Informationen zu den Spoolerfunktionen finden Sie unter Funktionen und Strukturen für Spoolerkomponenten.

Unterstützung der Treiberisolation in INF-Dateien

Wenn die INF-Datei, die einen Druckertreiber installiert, nicht angibt, dass der Treiber die Treiberisolation unterstützt, konfiguriert das Druckerklasseninstallationsprogramm den Treiber für die Ausführung im Spoolerprozess. Wenn die INF-Datei jedoch angibt, dass der Treiber die Treiberisolation unterstützt, konfiguriert das Installationsprogramm den Treiber so, dass er in einem isolierten Prozess ausgeführt wird. Ein Administrator kann diese Konfigurationseinstellungen überschreiben und für jeden Treiber angeben, ob der Treiber im Spoolerprozess oder in einem isolierten Prozess ausgeführt werden soll.

Um die Treiberisolation zu unterstützen, kann die INF-Datei, die einen Druckertreiber installiert, das Schlüsselwort DriverIsolation verwenden, um anzugeben, ob der Treiber die Druckertreiberisolation unterstützt. Das Festlegen von DriverIsolation=2 gibt an, dass der Treiber die Treiberisolation unterstützt. Das Festlegen von DriverIsolation=0 gibt an, dass der Treiber keine Treiberisolation unterstützt. Das Weglassen des DriverIsolation-Schlüsselworts aus der INF-Datei hat die gleiche Auswirkung wie das Festlegen von DriverIsolation=0.

Spoolerfunktionen für Treiberisolationseinstellungen

Die folgende Tabelle zeigt die Spoolerfunktionen, die ein Administrator zum Konfigurieren der Einstellungen für die Treiberisolation verwenden kann.

Funktionsname Vorgang
GetPrinterDataEx Rufen Sie die Treiberisolationseinstellungen für einen Drucker ab.
SetPrinterDataEx Legen Sie die Treiberisolationseinstellungen für einen Drucker fest.
EnumPrinterDataEx Führen Sie die Treiberisolationseinstellungen für einen Drucker auf.
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification Fordern Sie Benachrichtigungen über Änderungen an den Treiberisolationseinstellungen für einen Drucker an.

Das Format für die Daten lautet wie folgt:

  • Der Treiber in jeder Gruppe ist durch "\" getrennt.

  • Jede Treibergruppe ist durch "\\" getrennt.

Die erste Gruppe lädt den Treiber in die Spoolerprozesse. Jede nachfolgende Gruppe lädt die Treiber in isolierten Prozessen pro Gruppe. Die zweite Gruppe wird als "freigegebene" Gruppe betrachtet, in der standardmäßig andere isolationsfähige Treiber geladen werden.

Konfigurieren des Treiberisolationsmodus über die Verwaltung

Ein Computeradministrator kann die Windows-Druckverwaltungskonsole verwenden oder die Windows-Spoolerfunktionen aufrufen, um die Treiberisolationseinstellungen 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.

Treiberisolationsmodus Bedeutung
Shared Führen Sie den Treiber in einem Prozess aus, der für andere Druckertreiber freigegeben ist, aber vom Spoolerprozess getrennt ist.
Isolated Führen Sie den Treiber in einem Prozess aus, der vom Spoolerprozess getrennt ist und nicht für andere Druckertreiber freigegeben wird.
Keine Führen Sie den Treiber im Spoolerprozess aus.

Idealerweise kann ein Druckertreiber im freigegebenen Modus ausgeführt werden. Das heißt, es wird in einem isolierten Prozess ausgeführt, der für andere Druckertreiber freigegeben wird, aber vom Spoolerprozess getrennt ist. Ein Treiber muss möglicherweise im isolierten Modus ausgeführt werden, wenn er in einem vom Spoolerprozess getrennten Prozess ausgeführt werden kann, aber Schwierigkeiten hat, den Prozess mit anderen Treibern zu teilen. Beispielsweise kann ein schlecht entworfener Treiber Dateinamen aufweisen, die mit denen verwandter Treiber oder verschiedener Versionen desselben Treibers in Konflikt stehen, oder der Treiber kann häufig fehler oder einen Speicherverlust aufweisen, der den Betrieb anderer Treiber beeinträchtigt, die im gleichen Prozess ausgeführt werden.

Um die Problembehandlung zu unterstützen, kann der Domänenadministrator das Feature zur Treiberisolation auf einem Computer in der Domäne deaktivieren, oder der Administrator kann erzwingen, dass alle Druckertreiber auf dem Computer im isolierten Modus ausgeführt werden. Im isolierten Modus muss jeder Treiber in einem Prozess ausgeführt werden, der vom Spooler und den anderen Druckertreibern getrennt ist.

Wenn die Treiberisolation per Gruppenrichtlinie deaktiviert ist, ist die Isolation für alle Druckertreiber deaktiviert. Wenn die Isolation aktiviert ist, werden die einzelnen Treiber modusgeprüft. Wenn für einen Treiber der Isolationsmodus festgelegt ist, wird er basierend auf dem Registrierungseintrag im freigegebenen, isolierten oder ohne Modus ausgeführt. Wenn für den Treiber jedoch kein Isolationsmodus festgelegt ist und er mit der Isolation kompatibel ist, wird er im freigegebenen Modus ausgeführt. Wenn der Treiber nicht mit dem Modus kompatibel ist, bestimmt die Gruppenrichtlinie, ob der Treiber im freigegebenen Modus oder ohne Modus ausgeführt wird.

Das folgende Diagramm zeigt eine Entscheidungsstruktur für die Auswahl des Treiberisolationsmodus:

Flussdiagramm zum Auswählen des Treiberisolationsmodus.

Spoolerfunktionen unter Treiberisolation zulässig

In der Treiberisolation sind nur bestimmte Funktionen zulässig.

Spoolss.dll Funktionen

Die folgenden Funktionen werden von spoolss.dll exportiert und stehen Spooler-Plug-Ins zur Verfügung, indem sie mit spoolss.lib verknüpfen.

WinSpool.drv-Funktionen

Die folgenden Funktionen werden von winspool.drv exportiert und stehen Spooler-Plug-Ins zur Verfügung, indem sie mit Winspool.h verknüpfen.

Weitere Informationen

Funktionen und Strukturen für Spoolerkomponenten