调试 XPSDrv 打印机驱动程序
重要
建议使用 Microsoft 的 IPP 收件箱类驱动程序,以及 Print Support Apps (PSA) ,在 Windows 10 和 11 中自定义打印体验,以便进行打印机设备开发。
有关详细信息,请参阅 打印支持应用设计指南。
带有 XPSDrv 打印机驱动程序的打印队列托管在spoolsv.exe进程中。 但是,与基于 GDI 的打印机驱动程序不同,XPSDrv 打印机驱动程序的筛选器托管在独立于spoolsv.exeprintfilterpipelinesvc.exe进程中。 因此,必须将调试器附加到printfilterpipelinesvc.exe进程,以调试 XPSDrv 打印机驱动程序中的筛选器。
配置printfilterpipelinesvc.exe进程Time-Out
使用 XPSDrv 打印机驱动程序将打印作业发送到打印队列时,将启动printfilterpipelinesvc.exe进程。 进程在注册表中的值定义的非活动一段时间后退出。 由于printfilterpipelinesvc.exe过程的间歇性,很难将调试器附加到printfilterpipelinesvc.exe以调试 XPSDriv 打印机驱动程序中的筛选器。
但是,可以在注册表中配置非活动超时期限。 注册表中 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print 子项下的 PipelineHostTimeout 值定义printfilterpipelinesvc.exe进程超时(以毫秒为单位)。 可以增大此值,以便更轻松地调试 XPSDrv 打印机驱动程序。 请注意,printfilterpipelinesvc.exe进程已启动以分析配置文件,因此即使没有为驱动程序定义筛选器,该进程仍会启动。
配置系统进行调试
若要调试 XPSDrv 打印机驱动程序,必须:
分配打印队列,该队列使用要调试的驱动程序打印到文件端口。
将 PipelineHostTimeout 值设置为一个值,该值将为你提供足够的时间来调试问题。
将打印作业发送到在步骤 1 中创建的打印队列,以启动Printfilterpipelinesvc.exe进程。
将调试器附加到Printfilterpipelinesvc.exe进程并开始调试。
附加调试器后,可以在筛选器模块中设置断点并开始调试打印机驱动程序。
如果要调试的打印机驱动程序导致printfilterpipelinesvc.exe进程退出,然后才能附加调试器,可以执行以下操作:
创建在配置文件中未定义任何筛选器的 XPSDrv 打印机驱动程序。
使用在上一步中创建的打印机驱动程序创建打印队列。
分配打印队列,该队列使用要调试的驱动程序打印到文件端口。
将 PipelineHostTimeout 值设置为一个值,该值将为你提供足够的时间来调试问题。
将打印作业发送到在步骤 2 中创建的打印队列。
将调试器附加到Printfilterpipelinesvc.exe进程。
在要调试的打印机驱动程序中设置断点。
使用要调试的驱动程序打印到打印队列。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈