다음을 통해 공유


인쇄 필터 파이프라인 서비스에 디버거 연결

Important

최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.

자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.

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. 인쇄 작업을 다시 제출합니다.

필터 호스트 프로세스는 첫 번째 중단점 또는 첫 번째 검증 도구 중지에서 디버거에 침입해야 합니다. 여기에서 코드를 단계별로 실행하고 변수를 검사하는 등의 작업을 수행할 수 있습니다.