본문 바로가기

프로그래밍/미분류

[번역] 프린트 서브시스템의 기본개념

Fundamental concepts of the print subsystem

프린트 서브시스템의 기본개념

Posted Tuesday, February 28, 2006 9:54 AM by ashwinn
번역 2008년 2월 27일 DwYoon

After having posted details on bitmap drivers and port monitors, I realised that I should probably cover the fundamentals first. So my next few posts will be on the fundamentals of the print subsystem, overview of the print driver model etc.

비트맵 드라이버와 포트모니터에 대해 포스팅을 하고 나서야, 아마도 기본개념을 먼저 다뤄야 했다는 걸 깨달았다. 이후 몇 개의 포스팅을 프린트 서브시스템의 기본과 프린트 드라이버 모델의 개요에 대한 것이다.
 
Here is an overview of the different pieces in the print subsystem to kick off the fundamentals discussion.

기본개념을 시작하기 위해 아래에 프린트 서브시스템의 여러 조각들을 소개해 놓았다. 

  • The basic three components of the print pipeline are the application, GDI and the spooler. The driver is loaded either in the process context of the app or of the spooler.
  • 프린트 파이프라인의 세 컴포넌트는 응용프로그램, GDI, 스풀러이다. 드라이버는 응용프로그램이나 스풀러의 프로세스 컨텍스트에 로드되게 된다.
  • Application calls into GDI to initiate a print job
  • 응용프로그램의 GDI 호출로 프린트잡이 시작한다.
  • If output format is EMF, GDI will spool the data into the SPL file. The EMF format is just a sequence of DDI calls.
  • 출력 포맷이 EMF이면, GDI는 데이터를 SPL 파일로 스풀링한다. EMF 포맷은 DDI 호출을 차례대로 묶어놓은 것이다.
  • The decision on whether the output format is EMF or not is based on numerous factors. For example, FILE: printing will result in RAW since it is direct printing to port....no spooling. If the "Enable advanced printing features" is disabled, RAW will be the result as well. There are other cases where RAW will be output. So you cannot always rely on EMF.
  • 출력 포맷을 EMF로 할 지는 여러 요인에 의해 결정된다. 예를 들어, FILE: 포트로의 출력은 포트로의 직접 인쇄이기 때문에 RAW 포맷으로 이루어질 것이다. "고급 프린트 기능 사용"을 사용하지 않을 때에도, RAW로 출력될 것이다. RAW로 출력되는 다른 경우도 있다. 따라서 EMF로 출력될 것이라고 기대하면 안 된다.
  • In the case of RAW being spooled, GDI will directly call into the printer graphics dll. This can then callback into GDI if it needs assistance with the rendering work. The rendered data will then be passed to the spooler. This will go down to the language monitor, port monitor and so on.
  • RAW로 스풀링될 때에는, GDI는 프린터 그래픽스 dll로 직접 호출된다. 렌더링작업 중에 GDI 콜백이 필요하다면 GDI 콜백이 일어날 수도 있다. 이렇게 렌더링된 데이터가 스풀러로 넘겨진다. 이것은 다시 랭귀지 모니터, 포트 모니터 등등을 거쳐가게 된다.
  • In the case of EMF being spooled, the printer graphics dll is not called first. Once the job has been spooled and is ready for playback, the print processor will call back into GDI which will then call into the printer graphics dll.
  • EMF로 스풀될 경우에는, 프린터 그래픽스 dll이 우선 호출되지 않는다. 프린트잡이 모두 스풀되어, 플레이백할 수 있을 때에야, 프린트 프로세서는 GDI를 콜백할 것이고, GDI는 이 때 프린터 그래픽스 dll을 호출하게 된다.
  • Print providers perform queue management, job scheduling, print processor management, port monitor management etc.
  • 프린트 공급자는 큐 관리, 프린트잡 스케쥴, 프린트 프로세서 관리, 포트 모니터 관리 등의 작업을 맡아한다.
  • For a local print, winspool.drv provides the client interface into the spooler. So that justifies the "(locally)" part. Now, for "Connect To" down level printing, the print job is sent directly to the remote print server and not spooled locally. So win32spl.dll will act as the client to the spooler process on the server. So winspool.drv and win32spl.dll both are clients of spoolsv.exe - one locally and the other remotely.
  • 로컬 프린터의 경우, winspool.drv가 스풀러로의 클라이언트 인터페이스를 제공한다. 그래서 "로컬"이란 말이 정당화된다. 자, "~로 연결" 인쇄에서는, 프린트잡이 원격 프린트 서버로 직접 보내지고, 로컬에서는 스풀되지 않는다. win32spl.dll이 서버의 스풀러 프로세스의 클라이언트로 동작한다. 이렇게 winspool.drv와 win32spl.dll은 모두 spoolsv.exe의 클라이언트로 동작한다. 물론 하나는 로컬 클라이언트이고, 다른 하나는 원격 클라이언트이다.
  • Printer Driver Architecture
  • 프린터 드라이버 아키텍쳐
    • Basic Unidrv model involves unidrv.dll, unidrvui.dll, unires.dll and the GPD file.
    • 기본 Unidrv 모델은 unidrv.dll, unidrvui.dll, unires.dll과 GPD파일을 이용한다.
    • Optional components are rendering and UI plug-ins.
    • 부가 컴포넌트는 렌더링 플러그인과 UI 플러그인이다.

 

728x90