Compartir a través de


Asociación de un depurador al servicio de canalización de filtro de impresión

Importante

Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con las 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 la Guía de diseño de aplicaciones de soporte técnico de impresión.

Los filtros del controlador XPSDrv se hospedan en el servicio de canalización de filtros de impresión (printfilterpipelinesvc.exe). Si quiere asociar el depurador de Microsoft Windows (WinDbg) al servicio de canalización de filtro de impresión, hay dos maneras básicas de hacerlo:

  1. Use WinDbg desde la línea de comandos para iniciar el proceso.

  2. Adjunte WinDbg a un proceso existente.

La cola de impresión debe iniciar el host de canalización de filtro, por lo que debe usar la segunda opción para asociar WinDbg al proceso. Sin embargo, es posible que el host de canalización de filtro no sea persistente. Se inicia una nueva instancia del servicio cuando una aplicación envía un trabajo a la cola de impresión y el servicio finaliza poco después de que se complete el trabajo. Puede ser difícil asociar WinDbg a printfilterpipelinesvc.exe después de enviar el trabajo de impresión, pero antes de que el filtro que intenta depurar empiece a ejecutarse, especialmente si desea depurar el código de inicio o inicialización del filtro.

Para solucionar este problema, puede modificar la cantidad de tiempo que printfilterpipelinesvc.exe persiste una vez finalizado un trabajo de impresión. Ese valor se controla mediante el valor PipelineHostTimeout de la clave del Registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print.

Siga estos pasos para cambiar el valor de tiempo de espera del servicio de canalización de filtro:

  1. Ejecute el Editor del Registro de Microsoft (RegEdit) y vaya a HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print.

  2. Agregue un valor pipelineHostTimeout REG_DWORD a la clave, si aún no está presente.

  3. Establezca PipelineHostTimeout en el valor de tiempo de espera, en milisegundos. Establezca un valor lo suficientemente grande como para dar tiempo suficiente para adjuntar el proceso y establecer puntos de interrupción. Por ejemplo, si desea un valor de tiempo de espera de 1,5 minutos, establezca PipelineHostTimeout en 90000.

Después de establecer el valor pipelineHostTimeout , use el procedimiento siguiente para adjuntar WinDbg al servicio de filtro de canalización:

  1. Ejecute WinDbg con privilegios elevados, pero no lo adjunte a un proceso.

  2. Envíe un trabajo de impresión al controlador y espere a que se complete. El servicio de canalización de filtro continúa ejecutándose para el valor de tiempo de espera especificado.

  3. En el menú Archivo winDbg, seleccione Asociar a un proceso.

  4. En el cuadro de diálogo Asociar al proceso, seleccione printfilterpipelinesvc.exe y haga clic en Aceptar. Si el proceso aparece como "Acceso denegado", probablemente significa que WinDbg no se está ejecutando con privilegios elevados.

  5. Establezca puntos de interrupción, según corresponda.

  6. Vuelva a enviar el trabajo de impresión.

El proceso de host de filtro debe dividirse en el depurador en el primer punto de interrupción o en la primera detención del comprobador, lo que ocurra primero. Desde allí, puede recorrer el código, examinar variables, etc.