USB Host Printer Client Driver (Windows Embedded CE 6.0)

1/6/2010

The universal serial bus (USB) printer client driver is in the the %_WINCEROOT%\Public\Common\Oak\Drivers\USB\Class\Printer directory. The driver DLL is USBPRN.dll. Add the USB host printer client driver to your OS design from the Microsoft® Platform Builder Catalog or by setting SYSGEN_USB_PRINTER.

The USB printer client driver adheres to the USB host class device specifications. This driver provides a universal solution for printing on Windows Embedded CE operating systems through a USB port. The goal is to write the USB printer class driver as a transport driver that plugs into the existing print driver architecture.

For each USB printer attached to the USB bus, the USB class driver installs the sample PCL printer driver PCL.dll as the default printer driver. If your printer does not support PCL printing, modify the printer registry keys as described in the Windows Embedded CE printer documentation.

The USB printer class driver can support multiple printer devices. It presents each printer device as a single printer port to the system. The printer driver exposes the stream interface. For more information, see Stream Interface Drivers.

The following illustration shows the components of the USB printer class driver in the Windows Embedded CE driver architecture.

Ee484220.3fce120f-1cbd-43f1-b050-093ae8cdc5ad(en-US,WinEmbedded.60).gif

For information about the USB specification or the USB printer class specification, see the USB Web site.

USB Host Printer Client Driver Interface

The USB printer class driver follows the standard Windows Embedded CE USB driver interface functions. The driver is implemented as a USB client driver and it exposes the USBInstallDriver, USBDeviceAttach, and USBUnInstallDriver entry points to support Plug-and-Play functionality.

The USB printer driver is a transport driver similar to the parallel port driver. This driver exposes the stream interface and uses the index LPT for its name. This parallel port interface is also implemented in the USB printer class driver. From the perspective of the Print Monitor on a Windows-based desktop computer, the USB printer driver is just another parallel port printer driver. To implement the USB host printer client driver interface, no changes are needed to the upper level printer architecture.

The USB host printer client driver supports the following IOCTLs, which are defined in Pegdpar.h:

  • IOCTL_PARALLEL_SET_TIMEOUTS
  • IOCTL_PARALLEL_GET_TIMEOUTS
  • IOCTL_PARALLEL_GETDEVICEID
  • IOCTL_PARALLEL_WRITE
  • IOCTL_PARALLEL_STATUS

The driver also supports any USB printer device that has the following key parameters in its USB_INTERFACE_DESCRIPTOR.

Parameter Value Description

bInterfaceClass

07

Base class for printers

bInterfaceSubClass

01

Printers

bInterfaceProtocol

01

02

Unidirectional interface

Default bidirectional interface

USB Host Printer Client Driver Limitations and Known Issues

The following list shows the limitations and known issues with the USB printer class driver:

  • Because Windows Embedded CE has only a PCL printer driver, the following registry key entry is hard-coded into the registry to load the PCL driver. This enables testing all USB printers that support PCL print format.

    HKEY_LOCAL_MACHINE\Printers\<IEEE_1284_Device_String>\Driver:"PCL.DLL"
    
  • Non-PCL printers still support ASCII-only printing with the default PCL driver.
    To support printing on non-PCL printers, you can load third-party printer drivers.

  • The USB printer driver uses a hard-coded LPT: value in the registry.
    Therefore, the printer driver shows up in Microsoft® WordPad for Windows Embedded CE word processing software with two LPT1: ports, even though Device Manager has only started one printer driver: the USB printer driver with the LPT1: name. The printer's IEEE_1284_Device_String appears correctly in WordPad, however.

See Also

Concepts

USB Host Client Drivers
Installing the USB Host Printer Client Driver on the Target Device