Changes to Printer Drivers in Windows 2000

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Printer drivers are the software that allows application data to be converted into a format that a print device can use to create a printed page. In Windows NT 4.0, all printer drivers ran in kernel mode. These drivers are referred to as version 2 drivers in the Windows printing environment. Windows 2000 and later support user-mode drivers natively and kernel-mode drivers solely for backward compatibility. Microsoft moved to user-mode drivers (also called version 3 drivers) for system reliability and robustness. With a kernel-mode driver, an error can crash the entire server, whereas the effect of an error with a user-mode driver is restricted to the process the driver runs in—usually the spooler. Restarting the spooler is much faster than rebooting the entire system. In addition, a server’s additional services remain available to users when the spooler is down. Windows Server 2003 provides for automatic recovery of the Spooler service by default. (A setting in the service control manager)

Moving printer drivers from kernel mode to user mode wasn’t the only change introduced with Windows 2000. The Microsoft Universal Printer Driver (Unidrv) was also introduced. This printer driver core replaced the Raster Device Driver (RASDD) interface used in Windows NT 4.0 and earlier versions. The concept behind Unidrv is that independent hardware vendors (IHVs) are not required to write an entire driver, but instead can use the core printing functionality of the Unidrv “engine,” and only need to provide device-specific functionality through the use of a minidriver. A minidriver is typically a customization file, or possibly a plug-in, that allows special rendering functions or customized UI options. The core printer control language (PCL) engine (Unidriv.dll) and the PostScript engine (PScript5.dll) both allow the use of minidrivers. The customization file for a Unidrv minidriver is a .gpd file, and for a PostScript minidriver it is a .ppd file.

Windows Server 2003 includes drivers for over 3,800 print devices. Although these drivers are supplied by Microsoft as part of Windows Server 2003, most were provided to Microsoft by the respective printer manufacturer. These so-called inbox drivers ship in the product itself. Although these standard print drivers are adequate for the majority of corporate printing devices, printer manufacturers may choose to make their own drivers available to customers instead of using Unidrv. These drivers are often referred to as monolithic, because they are not implemented as UniDrv minidrivers. (Many manufacturers are beginning to develop all of their drivers using the UniDrv model rather than the traditional monolithic model.)

To summarize, there are several driver types:

  • Kernel mode (version 2) or user mode (version 3)

  • PostScript (PS) or PCL

  • Minidriver or monolithic

Note

Drivers can be a combination of these types—for example, kernel-mode PCL driver, user-mode monolithic driver, PostScript minidriver. (Drivers that ship with Windows 2000 or Windows Server 2003 are all user mode.) All of these driver types are available from the printer manufacture depending on the type of device. The inbox drivers supplied with Windows 2000 and later are also supplied by the printer manufacturer and distributed with their permission. All drivers supplied by Microsoft with Windows 2000, Windows XP, and Windows Server 2003 are Unidrv or PostScript minidrivers and are compatible across these platforms. Independent hardware manufacturers (IHV) also provide minidrivers that do not ship on the Windows CD.

When you understand the differences among the types of printer drivers, it becomes more clear how mixing and matching can cause problems in a network printing environment. Because Windows NT 4.0 can run only kernel-mode print drivers, and Windows 2000 and Windows Server 2003 can support both user-mode and kernel–mode drivers, resolving an incompatibility sometimes involves modifying the servers running Windows 2000 or Windows Server 2003 so they match the Windows NT 4.0 server.