Shedding Light on windows Programming Home Training Resources Registration About the Paul Yao Company
The Paul Yao Company





Microsoft Windows Embedded Partner


Programming Monolithic Printer Drivers for Microsoft Windows

Overview
This workshop introduces C programmers to the elements needed to write printer device drivers for Microsoft Windows. The workshop adopts a strategy of enhancing a simple bitmap printer driver, which simplifies the task of verifying the effect of changes to printer driver source code. Attendees of this workshop receive an exclusive set of printer testing and diagnostic tools from The Paul Yao Company. These tools have been upgraded and enhanced for the latest version of Microsoft Windows.

Who Should Attend

This lecture and lab-based workshop is intended for software and hardware engineers who need to understand how to make printing work in Microsoft Windows. This includes hardware designers, firmware programmers, device driver writers, and quality assurance engineers. At a minimum, attendees should be able to read and understand code written in the 'C' computer language. Some experience with Windows graphics programming or Windows printer driver programming is helpful, but not required.

Workshop Highlights
  • The Printing Pipeline - "from click-to-clunk"
  • Course includes exclusive Paul Yao Company driver tools
  • Learn about relationship between API and DDI
  • Understand kernel versus user mode issues
  • A close look at each of the pieces needed for a complete printer driver deliverable
Performance Objectives
At workshop completion, attendees will be able to...
  • Describe the basic structure of the device driver interface used to control graphic devices in Microsoft Windows.
  • Setup and use a debugger suitable for working with printer driver code; the workshop will use the Soft/ICE debugger from NuMega Technologies.
  • Describe the difference that user-mode vs. kernel-mode make on the operation of a Microsoft Windows printer device drivers.
  • Describe the relationship between Win32 API and printer driver device driver interface (DDI) entry points.
  • Describe the role of each element in the printing pipeline.
  • Describe the role of a printer driver's user-interface module, and write code to implement such a module using the Common Property Sheet User-Interface (CPSUI) library.
  • Describe the contents and role of key data structures, including DEVMODE, GDIINFO, and DEVINFO.
  • Write printer driver code to support the proper creation of text output.
  • Write printer driver code to support the proper creation of raster output.
  • Write printer driver code to support the proper creation of vector output.
  • Describe the steps by which a printer device driver initializes itself, and write code to support the proper initialization of a printer device driver.

Workshop Syllabus
Monday Tuesday Wednesday Thursday Friday

A Bitmap Printer Driver

  • Initialization
  • Drawing Functions
  • Job and Page Control

A Minimum Printing Program

  • DC Role in Printing
  • Print Job Control

Driver Entry Points

  • API to DDI mapping
  • Job control and printing flow

Printer Driver Debugging

  • Executable Setup
  • Soft / ICE Commands

The Printing Pipeline

  • Components
  • Network printing
  • PDL generation

Printer Driver Test & Diagnostic Tools

  • Test Control Panel
  • Null Driver Tools

The DEVMODE Structure

  • Public / Private members
  • Win32 API Access

User-Interface Module

  • Property Sheets
  • CPSUI Library
  • Events

Raster API

  • Bitmap creation
  • Raster Operators

Raster DDI

  • Copy, Mask
  • Rotate
  • ROP4

Vector API

  • Pens & Brushes
  • Function Calls

Vector DDI

  • Realizing Brushes
  • PATHOBJ

Win32 Text API

  • Function calls
  • Attributes

Unicode Character Set

  • Compiler Support
  • Win32 Support

Text Drawing DDI

  • DrvTextOut
  • FONTOBJ

Device Fonts

  • Entry Points
  • Data Structures

Driver Initialization

  • Sequence of Calls
  • ResetDC

Driver Data Structures

  • GDIINFO
  • DEVINFO
CONTACT US LOGISTICS REQUEST MORE INFORMATION