XPS 필터 구현
Important
최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.
자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.
모든 XPS 필터는 IPrintPipelineFilter 인터페이스를 구현해야 합니다.
IPrintPipelineFilter::InitializeFilter 메서드를 호출하는 동안 필터는 다음을 수행해야 합니다.
IPrintPipelineManagerControl 인터페이스에 대한 포인터를 캐시합니다.
IPrintPipelinePropertyBag 인터페이스에서 관련 데이터를 처리합니다.
IInterFilterCommunicator(pIInterFilterCom)의 IInterFilterCommunicator::RequestReader 및 IInterFilterCommunicator::RequestWriter 메서드를 호출하여 필터에 대한 공급자 및 소비자 인터페이스를 초기화합니다.
데이터에 PrintTicket 섹션이 포함된 경우 Microsoft Win32 PrintTicket 또는 PrintCapabilities API를 통해 데이터에 액세스할 수 있습니다. XPSDrv를 기반으로 하는 UniDrv 및 PScript5 드라이버의 경우 필터는 구성 서비스로 IPrintCoreHelper 인터페이스 코어 Unidrv 또는 PScript5 드라이버에 액세스할 수 있습니다.
필터는 드라이버 디자인에 따라 속성 모음을 통해 독점 구성 데이터에 액세스할 수도 있습니다.
필터 간 Communicator는 필터 파이프라인의 필터 간 통신을 처리하는 필터 파이프라인 관리자의 일부입니다. 필터 파이프라인 관리자가 필터를 초기화하면 필터가 해당 필터에 대해 정의된 읽기 및 쓰기 인터페이스를 가져올 수 있도록 필터 간 Communicator 인터페이스(IInterFilterCommunicator)가 필터에 전달됩니다.
Microsoft는 XPS 문서 및 스트림 인터페이스를 제공하지만 해당 필터에 대해 정의된 고유한 필터 간 인터페이스를 만들 수 있습니다. Microsoft는 다음 인터페이스를 제공합니다.
XPS 문서 인터페이스는 XPS 스풀 파일의 여러 부분에서 읽고 씁니다.
XPS 스트림 인터페이스는 데이터의 직렬 스트림을 읽고 씁니다. 이 인터페이스를 사용하여 필터에서 PDL로 XPS를 사용하지 않는 프린터로 PDL(페이지 설명 언어)을 작성할 수 있습니다.
필터는 XPS(XML Paper Specification)에 정의된 렌더링 규칙 및 PrintTicket 처리 규칙을 준수해야 합니다.
필터는 Microsoft .NET CLR(공용 언어 런타임) 또는 Microsoft WinFX 런타임 구성 요소에 의존해서는 안 됩니다.
파이프라인의 필터는 사용자 인터페이스 콘텐츠를 표시해서는 안 됩니다.
필터에는 다음 권장 사항이 적용됩니다.
필터는 별도의 프로세스 또는 스레드를 만들 수 없습니다. 별도의 프로세스 또는 스레드가 필요한 경우 필터는 프로세스 또는 스레드 수명을 제대로 관리해야 합니다.
필터에는 격리된 기능이 있어야 합니다. 모든 기능 및 구현은 모듈식이어야 합니다. 가능하면 필터 간의 순서 및 기능 종속성을 제거합니다.
필터는 파이프라인에 배치되는 경우를 순서대로 처리해야 합니다. 필터가 예상 순서에 없으면 충돌해서는 안 되며 상황을 정상적으로 처리해야 합니다. 필터가 다른 필터에 종속된 경우 종속성이 제공되지 않으면 상황을 정상적으로 처리해야 합니다.
필터에 비동기 알림을 추가하는 방법에 대한 자세한 내용은 인쇄 필터의 비동기 알림을 참조 하세요.