Depuración de controladores de impresora XPSDrv
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
Las colas de impresión con controladores de impresora XPSDrv se hospedan en el proceso de spoolsv.exe. A diferencia de los controladores de impresora basados en GDI, sin embargo, los filtros de un controlador de impresora XPSDrv se hospedan en el proceso de printfilterpipelinesvc.exe, que es independiente de spoolsv.exe. Como resultado, debe adjuntar el depurador al proceso de printfilterpipelinesvc.exe para depurar los filtros en un controlador de impresora XPSDrv.
Configuración del tiempo de espera del proceso de printfilterpipelinesvc.exe
El proceso printfilterpipelinesvc.exe se inicia cuando se envía un trabajo de impresión a una cola de impresión con un controlador de impresora XPSDrv. El proceso sale después de haber estado inactivo durante un período de tiempo definido por un valor del Registro. La naturaleza intermitente del proceso printfilterpipelinesvc.exe dificulta la asociación de un depurador a printfilterpipelinesvc.exe para depurar los filtros en un controlador de impresora XPSDriv.
Sin embargo, puede configurar el período de tiempo de espera de inactividad en el Registro. El valor PipelineHostTimeout en la subclave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print del Registro define el tiempo de espera del proceso printfilterpipelinesvc.exe en milisegundos. Puede aumentar este valor para facilitar la depuración de un controlador de impresora XPSDrv. Tenga en cuenta que el proceso printfilterpipelinesvc.exe se inicia para analizar el archivo de configuración de modo que, incluso si no hay ningún filtro definido para el controlador, se seguirá iniciando el proceso.
Configuración del sistema para la depuración
Para depurar un controlador de impresora XPSDrv, debe:
Asignar la cola de impresión que usa el controlador que desea depurar para imprimir en un puerto de archivo.
Establecer el valor PipelineHostTimeout en un valor que deje suficiente tiempo para depurar el problema.
Enviar un trabajo de impresión a la cola de impresión que creó en el paso 1 para iniciar el proceso Printfilterpipelinesvc.exe.
Adjuntar el depurador al proceso Printfilterpipelinesvc.exe y empezar la depuración.
Después de adjuntar el depurador, puede establecer puntos de interrupción en los módulos de filtro y empezar a depurar el controlador de impresora.
Si el controlador de impresora que desea depurar hace que el proceso printfilterpipelinesvc.exe salga antes de poder adjuntar el depurador, puede hacer lo siguiente:
Cree un controlador de impresora XPSDrv que no tenga ningún filtro definido en el archivo de configuración.
Cree una cola de impresión con el controlador de impresora creado en el paso anterior.
Asignar la cola de impresión que usa el controlador que desea depurar para imprimir en un puerto de archivo.
Establecer el valor PipelineHostTimeout en un valor que deje suficiente tiempo para depurar el problema.
Envíe un trabajo de impresión a la cola de impresión que creó en el paso 2.
Adjunte el depurador al proceso Printfilterpipelinesvc.exe.
Establezca puntos de interrupción en el controlador de impresora que desea depurar.
Imprima en la cola de impresión con el controlador que desea depurar.