Partager via


Débogage des pilotes d’imprimante XPSDrv

Important

La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’impression.

Pour plus d’informations, veuillez consulter la section Plateforme d’impression moderne et le Guide de conception des applications de support d’impression.

Les files d’attente d’impression avec des pilotes d’imprimante XPSDrv sont hébergées dans le processus spoolsv.exe. Cependant, contrairement aux pilotes d’imprimante basés sur GDI, les filtres d’un pilote d’imprimante XPSDrv sont hébergés dans le processus printfilterpipelinesvc.exe, qui est distinct de spoolsv.exe. Par conséquent, vous devez attacher votre débogueur au processus printfilterpipelinesvc.exe pour déboguer les filtres dans un pilote d’imprimante XPSDrv.

Configuration du délai d’expiration du processus printfilterpipelinesvc.exe

Le processus printfilterpipelinesvc.exe démarre lorsqu’un travail d’impression est envoyé à une file d’attente d’impression avec un pilote d’imprimante XPSDrv. Le processus se termine après une période d’inactivité définie par une valeur dans le registre. La nature intermittente du processus printfilterpipelinesvc.exe rend difficile l’attachement d’un débogueur à printfilterpipelinesvc.exe pour déboguer les filtres dans un pilote d’imprimante XPSDrv.

Cependant, vous pouvez configurer la période de délai d’expiration d’inactivité dans le registre. La valeur PipelineHostTimeout sous le HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print sous-clé dans le registre définit le délai d’expiration du processus printfilterpipelinesvc.exe en millisecondes. Vous pouvez augmenter cette valeur pour faciliter le débogage d’un pilote d’imprimante XPSDrv. Notez que le processus printfilterpipelinesvc.exe est démarré pour analyser le fichier de configuration, de sorte que même s’il n’y a aucun filtre défini pour le pilote, le processus sera tout de même démarré.

Configuration du système pour le débogage

Pour déboguer un pilote d’imprimante XPSDrv, vous devez :

  1. Assigner la file d’attente d’impression qui utilise le pilote que vous souhaitez déboguer pour imprimer vers un port de fichier.

  2. Définir la valeur PipelineHostTimeout à une valeur qui vous donnera suffisamment de temps pour déboguer le problème.

  3. Envoyer un travail d’impression à la file d’attente d’impression que vous avez créée à l’étape 1 pour démarrer le processus Printfilterpipelinesvc.exe.

  4. Attacher le débogueur au processus Printfilterpipelinesvc.exe et commencer le débogage.

Après avoir attaché le débogueur, vous pouvez définir des points d’arrêt dans les modules de filtre et commencer à déboguer le pilote d’imprimante.

Si le pilote d’imprimante que vous souhaitez déboguer provoque l’arrêt du processus printfilterpipelinesvc.exe avant que vous puissiez attacher le débogueur, vous pouvez procéder comme suit :

  1. Créer un pilote d’imprimante XPSDrv qui n’a aucun filtre défini dans le fichier de configuration.

  2. Créer une file d’attente d’impression avec le pilote d’imprimante créé à l’étape précédente.

  3. Assigner la file d’attente d’impression qui utilise le pilote que vous souhaitez déboguer pour imprimer vers un port de fichier.

  4. Définir la valeur PipelineHostTimeout à une valeur qui vous donnera suffisamment de temps pour déboguer le problème.

  5. Envoyer un travail d’impression à la file d’attente d’impression que vous avez créée à l’étape 2.

  6. Attacher le débogueur au processus Printfilterpipelinesvc.exe.

  7. Définir des points d’arrêt dans le pilote d’imprimante que vous souhaitez déboguer.

  8. Imprimer dans la file d’attente d’impression avec le pilote que vous souhaitez déboguer.