# Unidrv

UniDrv (Universal Printer Driver or Unidriver) is a GDI-based Microsoft Windows universal printer driver and architecture for non-PostScript printers. It is used to simplify driver development of non-PostScript printers (also called Winprinters) for printer manufacturers. Unidrv allows the creation of a printer-specific minidriver in the form of a GPD (Generic Printer Description) file, similar to a PPD file, which is much simpler than kernel mode driver development. Unidrv was introduced in Windows 2000 and replaced the Raster Device Driver (RASDD) interface used in Windows NT 4.0 and earlier versions.

## Overview

The concept behind Unidrv is that a complete printer driver need not be written by the hardware manufacturer; only a device-specific minidriver is required that uses the core printing functionality of the Unidrv engine. A minidriver can be a customization file, or a plug-in, that allows special rendering functions or customized UI options. Unidrv supports non-PostScript printers driven by PCL and PCL-like page description languages.

## Driver file details

The Unidriver is implemented as a set of DLL and GPD files along with other printer-specific support files:
* UniDrv.dll is the printer graphics driver file for printer languages based on raster graphics, including most inkjet and dot matrix printer languages.
* UniDrvUI.dll is the configuration file. It displays the user interface for UniDrv.dll.
* UniRes.dll, StdNames.gpd, TtfSub.gpd and some other support files.
* Raster minidriver, which has the file name extension .GPD, is the data file, and is also called the characterization file. The file name depends on the printer or printer family.
Newer Unidrv-based printer drivers from some printer vendors, e.g. Hewlett-Packard, may contain many other support files to allow support for more printer-specific options.

## Unidrv capabilities

The Unidriver is also called the raster driver because it supports raster (bitmap) graphics printing and is compatible with many printers. This driver supports the following features:
* Color printing at various depths, such as 4 bits per pixel (bpp), 8 bpp, and 24 bpp.
* Scalable TrueType and OpenType fonts, device fonts (including double-byte), grayscale printing, font substitution, run-length encoding (RLE), Tag Image File Format (TIFF) version 4.0, and Delta Row Compression (DRC).
* An extension interface that allows printer manufacturers to extend and customize the driver for specific models.
* Vector graphics languages HP-GL/2 and PCL-XL, monochrome, and color.

## Determining if the printer driver is Unidrv-based

To determine whether a driver is Unidrv-based, the following steps need to be taken on Windows:
* Click the Start button, and then open the Printers folder.
* From the File menu, click Server Properties.
* Click the Drivers tab.
* Select a driver, and then click Properties.
* Observe the driver list in the Driver Properties dialog box. If UniDrv.dll appears on the list of files, the driver is Unidrv-based.

## Future

Starting with Windows Vista, Microsoft intends XPSDrv to succeed Unidrv. The XPSDrv printer driver extends Microsoft's GDI-based, printer driver architecture to support consuming Open XML Paper Specification (XPS) documents and is more modular and extensible. With an XPSDrv printer driver, the XPS Document format is used as a spool file format and as a document file format.