共用方式為


將調試程式附加至列印篩選管線服務

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 列印支援應用程式設計指南

XPSDrv 驅動程式篩選是由列印篩選管線服務 (printfilterpipelinesvc.exe) 所裝載。 如果您想要將Microsoft Windows 調試程式 (WinDbg) 附加至列印篩選管線服務,有兩種基本方式可以執行這項操作:

  1. 從命令行使用 WinDbg 來啟動程式。

  2. 將 WinDbg 附加至現有的進程。

篩選管線主機必須由列印多任務緩衝處理器啟動,因此您必須使用第二個選項將 WinDbg 附加至進程。 不過,篩選管線主機可能不是持續性的。 當應用程式將作業提交至列印佇列,並在作業完成後不久終止服務時,就會啟動服務的新實例。 在提交列印作業之後,可能很難將WinDbg 附加至printfilterpipelinesvc.exe,但在您嘗試偵錯的篩選開始執行之前,特別是如果您想要偵錯篩選的啟動或初始化程序代碼。

若要解決此問題,您可以修改列印作業完成後,printfilterpipelinesvc.exe保存的時間量。 該值是由 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print 登錄機碼的 PipelineHostTimeout 值所控制。

使用下列步驟來變更篩選管線服務逾時值:

  1. 執行 Microsoft 註冊表編輯器 (RegEdit) 並流覽至 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print。

  2. 如果尚未存在,請將 PipelineHostTimeout REG_DWORD值新增至索引鍵。

  3. 將 PipelineHostTimeout 設定為逾時值,以毫秒為單位。 設定足夠的值,讓您自己有足夠的時間附加進程並設定斷點。 例如,如果您想要逾時值為 1.5 分鐘,請將 PipelineHostTimeout 設定為 90000。

設定 PipelineHostTimeout 值之後,請使用下列程式將 WinDbg 附加至管線篩選服務:

  1. 以較高的許可權執行 WinDbg,但請勿將它附加至進程。

  2. 將列印作業提交至您的驅動程式,並等候它完成。 篩選管線服務會繼續執行指定的逾時值。

  3. 從 [WinDbg 檔案] 選單中,選取 [附加至進程]。

  4. 在 [附加至進程] 對話框中,選取 [printfilterpipelinesvc.exe然後按兩下 [確定]。 如果進程列為「拒絕存取」,可能表示 WinDbg 未以較高的許可權執行。

  5. 視需要設定斷點。

  6. 再次提交列印作業。

篩選主機進程應該在第一個斷點或第一個驗證器停止時進入調試程式,無論哪一個都先行。 您可以從該處逐步執行程式碼、檢查變數等等。