디바이스 관리형 표면 처리
Important
최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.
자세한 내용은 인쇄 지원 앱 디자인 가이드참조하세요.
Unidrv는 인쇄 페이지 이미지를 렌더링할 때 GDI 관리형 드로잉 표면을 사용합니다. 모든 이미지는 비트맵으로 렌더링됩니다. 벡터를 그리는 기능과 같이 이 시나리오에서 악용할 수 없는 기능이 있는 디바이스의 경우 디바이스 관리형 드로잉 화면에 대해 사용자 지정된 드라이버 지원을 제공할 수 있습니다. 디바이스 관리형 화면을 지원하려면 다음을 구현하는 렌더링 플러그 인을 제공해야 합니다.
모든 Unidrv 지원 그래픽 DDI 그리기 함수에 대한 후크 함수 집합입니다. 다음 함수를 연결해야 합니다.
DrvAlphaBlend DrvBitBltDrvCopyBitsDrvDitherColorDrvFillPathDrvGradientFillDrvLineToDrvPlgBltDrvRealizeBrushDrvStretchBltDrvStretchBltROPDrvStrokeAndFillPathDrvStrokePathDrvTextOutDrvTransparentBlt
IPrintOemUni::EnableDriver 메서드는 Unidrv에 그래픽 DDI 후킹 함수에 대한 포인터를 제공하는 데 사용됩니다.
IPrintOemUni::D riverDMS 메서드는 장치 관리형 표면을 사용할지 Unidrv에 알리고 화면에 사용할 정의된 후크 함수를 지정합니다.
후킹 함수는 디바이스 관리 화면에 그릴 때 GDI의 Eng 접두사 지원 서비스로 다시 호출할 수 없습니다. 그러나 임시 비트맵 표면을 만든 다음, 해당 표면의 핸들을 Eng 접두사 그리기 함수에 전달할 수 있습니다(인쇄 작업 렌더링 참조).
IPrintOemUni::D riverDMS 메서드는 인쇄 작업이 렌더링될 때마다 호출되므로 렌더링 플러그 인은 각 작업에 대한 렌더링 화면 유형(GDI 관리 또는 디바이스 관리)을 지정할 수 있습니다. 사용자 인터페이스에서 선택 가능한 옵션에 대한 표면 선택을 기반으로 하려면 사용자 인터페이스 플러그 인도 제공해야 합니다.
디바이스 관리 화면에 텍스트 그리기
렌더링 플러그 인은 다른 모든 그래픽 DDI 그리기 함수와 함께 Unidrv의 DrvTextOut 함수를 연결해야 합니다. 디바이스 관리 화면에 대한 텍스트를 만들려면 다음 네 가지 함수 간의 상호 작용이 포함됩니다.
Unidrv의 DrvTextOut 함수
플러그 인의 DrvTextOut 후킹 함수 렌더링
Unidrv의 IPrintOemDriverUni::D rvUniTextOut 메서드
플러그 인의 IPrintOemUni::TextOutAsBitmap 메서드 렌더링
디바이스 관리 화면에 텍스트를 표시하는 단계는 다음과 같습니다.
GDI는 Unidrv의 DrvTextOut 함수를 호출합니다.
Unidrv는 렌더링 플러그 인의 DrvTextOut 후킹 함수를 호출합니다.
후킹 함수는 디바이스에 명령을 보내 텍스트의 브러시, 회전 및 클립 영역을 지정합니다.
후킹 함수는 다운로드한 글꼴을 사용하여 텍스트를 출력하는 Unidrv의 IPrintOemDriverUni::D rvUniTextOut 메서드를 호출합니다. 이 메서드는 문자 모양 기반 클리핑도 처리합니다.
IPrintOemDriverUni::D rvUniTextOut에서 다운로드 가능한 글꼴을 사용할 수 없는 경우(글꼴을 사용할 수 없거나 회전하기 때문에) 렌더링 플러그 인의 IPrintOemUni::TextOutAsBitmap 메서드를 호출하여 텍스트를 비트맵으로 그립니다.
IPrintOemDriverUni::D rvUniTextOut이 반환되면 DrvTextOut 후킹 함수는 벡터 명령(지원되는 경우)을 사용하여 DrvTextOut 함수의 prclExtra 매개 변수로 지정된 사각형에 따라 밑줄과 취소선을 그려야 합니다.