2011년 4월 19일 화요일

windows printer device driver

  • genprinter : 마이크로 소프트웨어에서 제고하는 프린터 드라이버 예제
 사용자 모드의 DLL인 프린터 프로세서에 관한 내용으로 스풀링된 데이터를 프린트 모니터에 전송될 수 있는 형식으로 변경하는 기능을 하고 있다.
참조 : http://msdn.microsoft.com/en-us/library/ff549907%28v=vs.85%29.aspx

  • PrintMirror : 오픈 소스로 제공되는 PDF 생성기와 같이 동작하는 가상 프린터 드라이버
참고 : http://sourceforge.net/projects/printmirror/   http://mskyt.tistory.com/16 

  • 윈도우즈 프린터 디바이스 드라이버의 소개
윈도우즈 2000 이후의 프린터 디바이스의 아키텍쳐는 스풀러와 프리터 드라이버의 모음으로 이루어진다. 디바이스에 종속적인 함수를 호출 함으로써, 응용프로그램은 프린트 작업을 생성하고 많은 디바이스에 전송할 수 있다. (레이져 프린터, 벡터 프로터, 라스터 프린터, 팩스 전송기)

프린터 드라이버는 렌더링 부분과 설정부분으로 구성되어져 있다. 렌더링 부분은 응용프로그램의 그래픽 명령을 프린터가 페이지의 영상을 렌더링하기위해서 사용하는 데이터 형식으로 변환한다. 설정 부분은 사용자가 프린터의 선택가능한 부분을 조절할 수 있도록 해주는 사용자 인터페이스 부분과 프린터의 설정과 응용프로그램의 제원을 통신할 수 있는 프로그램 인터페이스를 포함한다.

마이크로소프트사의 Win32 GDI 응용프로그램이 프린트할때, Win32 API에 있는 GDI 함수가 호출된다. 이 함수들은 정보를 GDI 그래픽 엔진에 전달한다. GDI 그래픽 엔진은 enhanded metafile (EMF) 파일로써 그리기 명령을 저장하거나, 프린터 드라이버와 함께 스풀러에 보낼 수 있는 프린트 가능한 영상으로 렌더링을 한다. 스플러 부분들은 EMF 파일을 해석하고 페이지 모양세 정보와 작업을 제어하는 지시를 데이터 흐름에 넣을 수 있다. 그런다음 스플러는 데이터 흐름을 대상 프리터의 IO 포트와 연관되는 시리얼, 병렬 혹은 네트워크 포트 드라이버에 보낸다. 게다가 XPS 장치로 프린트를 한다면, GDI 프린트 명령어들은 GDI를 통해서 XPS 변환요소로 변환된다. 프린트 작업은 XPS 프린트 경로로 보내어 진다.

윈도우 비스타와 윈도우 7상에서의 XPS 프린터 경로에있는 프린터 드라이버는 XML Paper Specivication (XPS)에 기반하여 작성된다. Microsoft Win32 XPS 응용 프로그램이 프린트를 할때, 응용프로그램은 XPS 프린트 API에 있는 XPS 함수를 호출한다. XPSDrv 프린터 드라이버와 큐로 프린트 할때, 스플러는 렌더링과 출력을 위해서 XPS 스플 파일을 드라이버로  바로 전달한다. XPS 파일은 GDI 장치로 프린트 되어 질때, XPS를 통해서 EMF 파일은 GDI Conversion Module로 변환된다. 그리고나서 Win32 GDI 응용프로그램과 비슷한 방식으로 GDI 프린트 경로로 전달된다.

윈도우 비스타와 윈도우 7에서 Windows Presentation Foundation (WPF) 응용프로그램들은 XPS 문서를 XPS 스플 파일 형식으로 스플러에 저장하기위해서 WPF 프린터 지원 함수를 호출한다. Win32 XPS 응용프로그램으로 부터 프린트 할때와 마찬가지로, 스플러가 XPSDrv 프린터 드라이버와 프린트 큐로 프린트할때, 스플러는 렌더링과 프린터로 출력하기 위해서 원본 형식으로 스플된 문서를 XPSDrv 프린터 드라이버로 전달한다. 스플러가 GDI 기반의 프린터로 프린트 할때, 버전 3 프린터 드라이버, 스플러는 XPS 스플 파일 형식으로된 데이타를 EMF파일로 변환하기우해서 GDI Conversion Module로 전송한다. 그리고나서 프린팅을 위해서 GDI 기반 프린터 드라이버로 데이터를 전송한다. 이 데이터 흐름에 대한 좀더 자세한 내용은 Microsoft Windows Vista Print Path Overview를 보라. XPS에 대한 좀더 자세한 내용은 Microsoft XPS Web 사이트를 보라.

스플러와 드라이버 요소는 대체되어질 수 있다. 그래서 하드웨어 제조사들은 쉽게 새로운 하드웨어에 대한 지원을 추가 할 수 있다. 프린트 스플러와 드라이버 요소에 대한 좀더 자세한 내용은 다음 섹션을 보라:

Print Spooler Architecture
Print Driver Architecture

새로운 프린터에 대한 지원은 보통 Microsoft가 지원하는 프린터 드라이버중 하나를 가지고 새로운 데이터를 생성하는 것만 요구한다.  좀 더 자세한 정보는 Printer Driver Overview 를 보라. Microsoft Universal Printer Driver 와 Microsoft Postscript Print Driver 의 동작을 수정할 수 있다. 좀더 자세한 내용은 Customizion Microsoft's Printer Driver를 보라. 그리고 윈도우 2000과 그 이후의 프린터 스플러를 수정할 수도 있다. Customizing Print Spooler Components.

다른 섹션들은 다음 사항을 다룬다.

Terminal Server Printing
USB Printing
Bluetooth Printing
Printer Driver Testing and Debugging

다기능 프린터(MFP)에 대한 드라이버를 작성하고자 한다면, Windows Hardware and Device Central(WHDC) 웹사이트에 있는 Multifunction Printer Design Recommendations를 보라. 전형적인 다기능 프린터는 프린트와 복사, 그리고 팩스 주고 받기, 문서 스캔을 할 수 있다. 좀더 자세한 프린터 드라이버 디자인, 개발, 테스트는  Printing Architecture and Driver Support를 보라.


참조 : http://msdn.microsoft.com/en-us/library/ff551767%28v=VS.85%29.aspx

댓글 없음:

댓글 쓰기