Windows Server 2003 has built-in support for over 3,800 printer drivers, including both 32-bit and 64-bit printer drivers. Support for 64-bit printer drivers is important because systems running 64-bit editions of Windows need 64-bit drivers. As with previous versions of Windows, printer drivers are installed automatically on clients when they first try to print to a new printer device on a print server.
In Microsoft Windows NT 4, all printer drivers operate in kernel mode and are said to be version 2 drivers. With a kernel-mode driver, an error with a printer driver can cause the server to crash. This happens because the driver is running in the operating system kernel process. In Windows 2000 and later, printer drivers operate in user mode and support kernel-mode drivers only for backward compatibility. User-mode drivers are referred to as version 3 drivers.
User-mode drivers operate in a process separate from the operating system kernel process. An error in a user-mode driver affects only its related process. Typically, this means the Print Spooler process hangs up and has to be restarted. Because Windows Server 2003 is configured by default to restart the Print Spooler process automatically within 1 minute if it stops with an error or hangs up, no administrator action is required.
Inside Out: Automatic restart of services is for errors only
When a service is configured to restart automatically, the restart is performed only when an error occurs. Two general types of errors can occur: either the service will hang up and stop responding or the service will stop running and exit with an error code. In these cases, automatic restart can usually recover the service and get the service to resume normal operations. If you stop a service manually, automatic restart does not take place.
Windows 2000 and later also use the Microsoft Universal Printer Driver (Unidrv) rather than the Raster Device Driver (Rasdd) interface, which was used in Windows NT 4. The Universal Printer Driver provides core printing functions that printer driver manufacturers can use. These functions are implemented in two print engines:
Unidrv.dll Provides the core printing functions for PCL print devices. Uses EMFformatted files.
PScript5.dll Provides core printing functions for PostScript print devices. Uses RAW-formatted files.
The availability of these print engines gives printer manufacturers several options for developing printer drivers. They can create a mini driver that implements only the unique functionality of a particular print device and rely on the appropriate print engine for print services, or they can make their own custom driver that uses its own print engine.
Inside Out: Automatic print driver distribution on clusters
On clusters, any print driver that you install on a virtual cluster is automatically distributed from the cluster spooler resource to all nodes of the cluster. This is an important new feature that simplifies installation and management of print clusters. Administrators must install drivers only once rather than once in each node in the cluster. Additionally, Terminal Services and print services can coexist. This important change allows Terminal Services and print services to be installed on the same nodes in a cluster.
Printing has been enhanced in several areas. Print spooling has been optimized to improve read/write performance from disk. This allows higher-volume printing and faster printing of documents. The Standard TCP/IP Port Monitor used for network-attached print devices has been updated. The updates improve the way print servers establish connections with network-attached print devices and monitor print jobs for error messages, progress, and completion. You can now monitor the status of network-attached printers using a Web browser. To do this, type in the Internet Protocol (IP) address of the network-attached printer.
Also new for Windows Server 2003 are a set of tools for managing print services from the command line. These tools include the following:
PrintDriverInfo A Windows Server 2003 Resource Kit tool for obtaining information about the printers installed on a system
SplInfo A Windows Server 2003 Resource Kit tool for tracking print spool information and usage statistics
PrnMngr A built-in tool for installing printers and managing printers configured on a computer
PrnCnfg A built-in tool for setting printer configuration, including printer name, printer properties, printer sharing, and printer publishing in the Active Directory directory service
PrnDrv A built-in tool for listing and managing print drivers
PrnJobs A built-in tool for viewing and managing print jobs in a print queue
PrnPort A built-in tool for creating and managing Transmission Control Protocol/Internet Protocol (TCP/IP) ports for printers
PrntQctl A built-in tool for managing print queues