Debuggen von XPSDrv-Druckertreibern
Wichtig
Die moderne Druckplattform ist die bevorzugte Methode von Windows für die 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 Moderne Druckplattform und im Designhandbuch für die Drucksupport-App.
Druckwarteschlangen mit XPSDrv-Druckertreibern werden im spoolsv.exe Prozess gehostet. Im Gegensatz zu GDI-basierten Druckertreibern werden jedoch die Filter eines XPSDrv-Druckertreibers im printfilterpipelinesvc.exe Prozess gehostet, der von spoolsv.exe getrennt ist. Daher müssen Sie den Debugger an den printfilterpipelinesvc.exe Prozess anfügen, um die Filter in einem XPSDrv-Druckertreiber zu debuggen.
Konfigurieren des printfilterpipelinesvc.exe Prozesstimeouts
Der printfilterpipelinesvc.exe-Prozess beginnt, wenn ein Druckauftrag mit einem XPSDrv-Druckertreiber an eine Druckwarteschlange gesendet wird. Der Prozess wird beendet, nachdem er für einen bestimmten Zeitraum inaktiv war, der durch einen Wert in der Registrierung definiert wird. Die zeitweilige Natur des printfilterpipelinesvc.exe Prozesses macht es schwierig, einen Debugger an printfilterpipelinesvc.exe anzufügen, um die Filter in einem XPSDriv-Druckertreiber zu debuggen.
Sie können jedoch den Inaktivitätstimeoutzeitraum in der Registrierung konfigurieren. Der PipelineHostTimeout-Wert unter dem Unterschlüssel HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print in der Registrierung definiert den printfilterpipelinesvc.exe Prozesstimeout in Millisekunden. Sie können diesen Wert erhöhen, um das Debuggen eines XPSDrv-Druckertreibers zu vereinfachen. Beachten Sie, dass der printfilterpipelinesvc.exe Prozess gestartet wird, um die Konfigurationsdatei zu analysieren, sodass auch dann, wenn kein Filter für den Treiber definiert ist, der Prozess weiterhin gestartet wird.
Konfigurieren des Systems für das Debuggen
Zum Debuggen eines XPSDrv-Druckertreibers müssen Sie:
Weisen Sie die Druckwarteschlange zu, die den Treiber verwendet, den Sie debuggen möchten, um in einen Dateiport zu drucken.
Legen Sie den PipelineHostTimeout-Wert auf einen Wert fest, der Ihnen genügend Zeit zum Debuggen des Problems gibt.
Senden Sie einen Druckauftrag an die Druckwarteschlange, die Sie in Schritt 1 erstellt haben, um den Printfilterpipelinesvc.exe Prozess zu starten.
Fügen Sie den Debugger an den Printfilterpipelinesvc.exe Prozess an, und beginnen Sie mit dem Debuggen.
Nachdem Sie den Debugger angefügt haben, können Sie Haltepunkte in den Filtermodulen festlegen und mit dem Debuggen des Druckertreibers beginnen.
Wenn der Druckertreiber, den Sie debuggen möchten, bewirkt, dass der printfilterpipelinesvc.exe Prozess beendet wird, bevor Sie den Debugger anfügen können, können Sie die folgenden Schritte ausführen:
Erstellen Sie einen XPSDrv-Druckertreiber, der keine Filter in der Konfigurationsdatei definiert hat.
Erstellen Sie eine Druckwarteschlange mit dem im vorherigen Schritt erstellten Druckertreiber.
Weisen Sie die Druckwarteschlange zu, die den Treiber verwendet, den Sie debuggen möchten, um in einen Dateiport zu drucken.
Legen Sie den PipelineHostTimeout-Wert auf einen Wert fest, der Ihnen genügend Zeit zum Debuggen des Problems gibt.
Senden Sie einen Druckauftrag an die Druckwarteschlange, die Sie in Schritt 2 erstellt haben.
Fügen Sie den Debugger an den Printfilterpipelinesvc.exe Prozess an.
Legen Sie Haltepunkte im Druckertreiber fest, den Sie debuggen möchten.
Drucken Sie in die Druckwarteschlange mit dem Treiber, den Sie debuggen möchten.