Summary printing

Terms

Windows 2000 uses the following printing terms :  

bulletPrint device. A print device is the hardware device that produces the prints. Windows 2000 supports local print devices and network-interface print devices. Local print devices are connected to a physical port on the print server. Network-interface print devices are connected to the print server via the network. They have their own network interface card and network address or are connected to an external network adapter.
bullet(Logical) printer. A logical printer is a software interface between the operating system and the print device. The printer defines where a document will reach the print device (local, via network, to file), when it will be printed, and various other aspects.
bulletPrint server. A print server stores the information of the print devices and the printers. It receives and processes documents from the client computers.
bulletPrinter driver. A printer driver is one or more files containing information that Windows 2000 needs requires to convert print documents into a specific printer language.
bulletPrint job.  The code that contains the information to be printed and the way it should be printed.

Connecting a printer

When connecting a printer to a machine, Windows 2000 will use the plug-and-play functionality. A printer connected via USB or IEEE 1394 serial block protocol 2 will be automatically detected. (hot-swapping) If a printer is connected via a parallel port, the machine has to be reboot unless the Discover new hardware wizard is used. Windows 2000 also supports infrared printers. (plug-and-play) Printers using a serial port or printers connected via the network are supported but do not use plug-and-play.
You don't have to be administrator to connect plug-and-play printers.

Network printing

Options for network printing :

bulletWindows 2000 server can handle large numbers of connections and supports Macintosh, Unix computers and NetWare clients. Microsoft recommends a dedicated print server installed as a member server with sufficient RAM and disk space for spool files.
bulletWindows 2000 Professional supports up to 10 network connections for file and print servers. It does support Unix computers but does not support Macintosh and NetWare.

When defining a network-interface print device you have to add additional port info :

bulletNetwork protocol. The default protocol for Windows 2000 is TCP/IP.
bulletPrinter name or ip address. Enter the location of the print device by using an ip-address or a DNS name. When using an ip-address Windows 2000 will suggest a port name in the form of IP_ip address. 
bulletPort name and other settings. The name of the port that Windows 2000 has to use in the wizards. Via the wizard you can also specify various port settings like the protocol (RAW or LPR), Port number (default 9100), LPR settings and SNMP status information.

The preferred port monitor in Windows 2000 is the Standard TCP/IP Port Monitor (SPM) which uses TCP/IP to transport the documents. It uses SNMP  to configure and monitor the printer ports.

Port can be modified and deleted via File - Server properties in the printers folder. (ports-tab)

Windows 2000, NT, 98 and 95 clients will automatically download the printer driver when connected to a shared printer on a Windows 2000 server, as long as a copy of the driver is available on the print server. (Point and print) Keep in mind that different hardware platforms use different drivers (e.g. Alpha) A client using Windows 3.1x or MS Dos needs a manually installed local printer driver.

Non Microsoft clients

Users of non-Microsoft clients can use the Windows 2000 print server if additional services are installed :

bulletMacintosh. Services for Macintosh are included with Windows 2000 server but are not installed by default. This option is not available on Windows 2000 Professional.
bulletUnix. TCP/IP printing (Line Printer Daemon) service should be installed. This can be done on Windows 2000 Professional and server.
bulletNetWare. File and Print Services for Netware should be installed. This option is not included in Windows 2000 Professional.

Connecting to a printer

A Windows 2000 client can connect to a printer by searching the Active Directory, using the UNC-name or browsing the network. A client using Windows NT, Windows 95 or 98 can only use the UNC-name or browse the network. MS Windows 3.x users use the Print Manager. MS Dos users use the net use command (net use lptx \\server_name\share name).

Windows 2000 can also use a web interface to connect to a printer. Use the http://server_name/printers URL to view all servers. Select Connect to add the printer. You also connect directly to a printer by using the http://server_name/share_name and use the Connect option to copy the printer drivers to the client or use http://server_name/printers/printer_name/printer to connect the print via the add printer wizard. The main benefit of the web interface is that users without access to the LAN can remotely access the printers. You can disable the web interface by adding the registry key HKLM\Software\Policies\Microsoft\WindowsNT\Printers\DisableWebPrinting (DWord value 1 and restart)

Printer pool

A printer pool is one printer that is connected to multiple print devices through multiple ports on the servers. These pools can be local or network-interface print devices. The print devices must use the same printer driver. When a user sends a document to the printer pool, the printer checks the for the first available port. The benefits of a printer pool are fast printing in a high volume environment and a single administration point for various print devices. Windows 2000 supports and unlimited amount of print devices in a printer pool. Select 'Enable printer pooling' at the ports-tab of the printer the enable print pooling for a device.

Printer priority

If you point two or more printers to the same print device, you can set priorities for each printer. This enables the possibility to print high priority prints first by sending them to a separate printer with a high priority. The lowest priority is 1, the highest priority is 99. It gives also the ability to create separate queues for various functions of one print devices, e.g. double sided printing.

Print process parts

bulletThe graphic device interface (GDI). This portion of Windows 2000 calls the video driver to produce screen output and uses the printer driver in cooperation with the application to initiate prints.
bulletThe printer driver.  The printer driver is the interface between the operating system and the print device. Printer drivers are not compatible across operating system. If you want to let a Windows 98 client print via a Windows 2000 print server, you have to install the Windows 98 printer drivers on the Windows 2000 print server. A printer driver has three components :
bulletPrinter graphics driver.  The printer graphics driver renders the GDI commands into device driver interface (DDI) that can be sent to the printer
bulletPrinter interface driver.  The printer interface driver is the interface to the characterization data file that stores the information of the printer's property sheet.
bulletCharacterization data file. This file provides information about the make and model of a specific type of print device, including what it can do. E.g. print colors, print on both sites, etc.

You can view the installed printer drivers via File - Server properties in the printers folder. (drivers tab)

bulletThe printer spooler.  The printer spooler (%systemroot%\system32\spools.dll) is a collection of dll's and device drivers that receive, process, schedule and distribute print jobs. The spooler directory can be changed at the advanced tab of the server properties of the printers-folders. By default the directory is %systemroot%\system32\spool\printers. It is also possible to define a separate spool directory for a printer by changing the registry: \SYSTEM\CurrentControlSet\Control\Print\Printers \<specific printer>\SpoolDirectory
The printer spooler is composed of the following components :
bulletThe print router. The print router passes the print request to the appropriate print provider. If it's a local job it is send to the local print provider. If it is send over the network it is send to a Windows or Netware print provider. If a client connects to a print server, communication takes place via RPC's from the client's print router (winspool.dll) to the server's print router (spoolsse.dll)
bulletThe remote print provider. Type of remote print providers are the Windows Network print provider and the Novell NetWare remote print provider. These providers send the job from a client to a local print provider on a print server when printing over the network 
bulletThe local print provider. After the print router on the client did find the right print provider (local or on a print server) the job is send to the local print provider (localspl.dll). If this provider is on a server, the client does send a remote procedure call to it. The local print provider (on the client or on a print server) than writes a spool file (*.spl) and tracks the administration for that print job. Also *.shd files are added. These shadow files create information so Windows 2000 can recreate the print job after a reboot. The spool directory can be set via the server properties in the Printers-Windows. Also can be set if the spool-files should be deleted if the job has finished successfully. (default is on) 
SPOOL = Simultaneous Print Operations On Line
bulletThe print processor. The print processor works with the printer driver to de-spool spool files during the playback, making changes to the spool file based on it's data type. If a separator page is needed, it uses the separator page processor. Not all type of client produce the same kind of spool file. A Windows 2000 spool file differs from a Unix spool file. The spool file can accept the data in two formats :

Enhanced Metafile (EMF)

EMF files are device-independent to reduce the amount of time needed to render the file. After the file is created the application can continue and the print server will handle the file by using the GDI and the printer driver. Windows 9x systems use EMF it for local printing.

RAW

RAW files are fully rendered when created and  are a bit bigger than EMF files. Windows 9x uses them for remote printing, Windows NT 3.51 for local and remote printing.
The default type the Windows NT/Windows 2000 print processor (winprint) uses is RAW. This so Windows 9x client can print via the network. If a Windows 2000 client is able to send an EMF file, EMF will be used to handle the printjob.
RAW (FF appended) will always add a form-feed character to a print, RAW (FF auto) will try to detect if a form-feed should be add.

bulletThe print monitor. The print monitor consists of two monitors who maintain the communication with the print device :
bulletThe language monitor. If the printer device is able to communicate with the print server, the language monitor uses the Printer Job Language to exchange information about the status of the printer.
bulletThe port monitor. The port monitor transmits the print job to the print device or to another server. It controls the flow to the i/o port to which the print device is attached. (serial, parallel, SCSI or network). The local port monitor (localmon.dll) controls the flow to the parallel and serial ports. (one way communication from the server to the print device) The standard tcp/ip port monitor (SPM) controls the flow to most network printers.

Steps of a print process

  1. If a user prints, the application calls the Graphic Device Interface (GDI) api. The GDI uses the printer driver to render the print job. If the RAW format is used, the GDI is ignored.
  2. On the client, the print router selects the local print provider for locally installed printers. If the job is send to a print server, the print router select a remote print provider that sends the job to a local print provider on the print server.
  3. The local print provider spools the job to the disk.
  4. The local print provider polls the print processors, passing the print job to the one that recognizes the selected printer. Based on the data type of the spool file (raw or emf) changes are made to the spool file.
  5. If desired the separator page processor adds a separator page to the print job.
  6. The print job is de-spooled to the printer. If the printer is bi-directional the printer job language monitor (PJL) sets up communication. If not, or once the language monitor is done, the job is passed to the port monitor.
  7. The print job arrives at the print device.

Printer installation issues

bulletA plug-and-play printer will be automatically detected if you use the 'Automatically detect my printer' option when you have to choose for a local- or network printer.
bulletIf you want to print to a file, select the File-option at the 'Use the following port' item.
bulletYou can use the Windows update functionality to download a newer driver from the Microsoft web site.
bulletThe default printer name is the printer's model name. The name can be up to 220 characters but cannot contain a comma, backward slash or exclamation point. As some programs cannot connect to printers with more than 31 characters, keep the name shorter than 32 characters.
bulletThe share name can be up to 220 characters. If you have DOS-clients, limit the name to 8 characters to be compatible.
bulletInformation entered into the comment box will be displayed to DOS, NT and Windows 9x clients. Information in the location box will only be shown to Windows 2000 users.
bulletPrinter drivers are stored in \winnt\system32\spool\drivers. (print$-share)
bulletPrinter information is stored in HKLM\System\CurContrSet\Control\Print\Printers
bulletAdditional drivers for other operating systems can be add at the Sharing tab of the printer's properties.
bulletSelect 'Print directly to printer' in the Advanced tab if you do not want to create a spool file.
bulletWindows 2000 can install printer drivers for Alpha (NT3.1 - 4), Intel (Windows 2000, NT 3.1 and 4.0, Windows 9x), PowerPC (NT3.51 and 4), MIPS (NT 3,1-4). MS Dos and Windows 3.x clients need local printer drivers.

Active Directory

A printer is automatically published in the Active Directory when the default settings are in place. This allows users to find printers by defining location, paper sizes, ability to print color or double-sided, etc. Some group policies that control printer defaults with respect to publishing printers in active directory are :

bulletAutomatically publish new printers in Active Directory. (enabled by default)
bulletAllow printers to be published. (enabled by default)
bulletDisplay the down level page in the Add Printer wizard (enabled by default) Can be disabled to prevent the Add Printer wizard from browsing the network for shared printers.
bulletPrune printers that are not automatically republished (how the pruning service, which automatically removes printers, handles printers on non-Windows 2000-based print servers when a printer is not available.

Down level printer pruning properties determines how orphaned PrintQueue objects representing down level printers are to be pruned. A printer is down level if the server hosting the printer is not running Windows 2000.

bulletPrinter Browsing: If enabled printers are offered for printer browsing. By default only shared printers that are not published in the active directory are published.

Non-Windows 2000 printers can be published by using the Active Directory Users and Computers tool.

Printer permissions

Print permissions can only be set when using NTFS. You can set the following permissions :

bulletPrint. Users are allowed to print to the print device and to pause, cancel, restart or resume their own documents. (By default Everyone group is allowed to print)
bulletManage documents. Same as print permissions and users are also able to manage other users prints.
bulletManage printers. Same as manage documents and users are able to add and remove printers, set permissions, change shares and manage printer settings. (By default administrators, print operators and power users)

To add/remove printers, share printers, take ownership of a printer and the change the printer properties or permissions you must have the Manage printer permission. Default Administrators, Print- and Server operators and Power Users (professional and stand-alone server) do have these rights.

When a job is send to a printer outside the available hours, the job will be queued until the printer is available again. If you want different access hours for different users, create more than one printer for a printer device.

Printers installed on a server are shared by default, printers installed on Windows 2000 Professional are not automatically shared.

IPP printing

Any client that supports Internet Printing Protocol (IPP) 1.0 can print to a Windows 2000-based print server using HTTP. (Windows 9x-based and Windows 2000 clients using IE 4.0 or higher) if Internet Information Services (IIS) or Microsoft Peer Web Services (PWS) is installed on the Windows 2000 print server. When IIS is installed, IPP is enabled by default and all printers on that server can be accessed via IPP. A Windows 95/98 client can install the IPP client from the installation cd-rom. (\clients\win9xipp.cli\wpnpins.exe)
A user can connect to the printer by providing an URL. When the driver is available on the server, it will create a .cab-file and offer the driver as a point-and-print service. Security is provided by IIS. This means if all clients should be supported, clear-text authentication is needed but MS challenge/response, kerbores, digest authentication and SSL 3 can be used.

An administrator can disable Internet printing with the group policy setting Disable Web-based Printing.  More info : http://support.microsoft.com/support/kb/articles/Q234/2/70.ASP

Separator files

Windows 2000 contains four separator pages stored in \winnt\system32 :

bulletSysprint.sep. Prints a separator page for each document. Compatible with postscript.
bulletPCL.sep. Switches to PLC for HP-printers and adds a page for each document.
bulletPscript.sep. Switches to Postscript for HP but does not print a page before a document.
bulletSysprtj.sep. Sysprint.sep with Japanese characters.

A separator file is set at the Advanced tab of a printer.

Standard drivers

Unidriver

Windows 2000 Server supports the UniDriver 5.0 printer driver and the PostScript 5.0 printer driver.  UniDriver 5.0 is, a 32 bits printer driver that support all non-Postscript printers also called a raster driver. The driver support various color depths, truetype-, opentype- and device fonts. It has an extension interface for which manufacturers write specific data files. The drivers use the Unidrv.dll (printer driver), Unidrui.dll (configuration file/user interface) and xxx.gdp. (data/characterization file, file name is based on printer model)

Postscript 5.0

The postscript 5.0 printer driver creates structured postscript and support postscript level 1,2 and 3. The driver is Adobe 4.3 and Document Structuring Convention (DSC) 3.0 compatible. It uses the pscript5.dll (printer driver), ps5ui.dll (configuration file) and x.ppd (data/characterization file, file name is based on printer model) files.

HP-GL/2 Plotter Driver

The Windows 2000 plotter driver supports diverse plotters that use the HP-GL/2 language but does not support HP-GL. It uses the plotter.dll (printer driver), plotui.dll (configuration file) and x.pcd (data/characterization file. file name is based on the printer model) files. 

LPR/LPD

This Windows 2000 component provides line printer remote (LPR) and line printer daemon (LPD) services to allow cross-platform printing between Unix and Windows 2000. LPR is the client-side Unix printing utility that enables a user to send a job to a Unix print server running LPD.

In Windows 2000, the two new services provided by Print Services for Unix are:

bulletLPRMON, which enables Windows 2000 print servers to send print jobs to Unix print server running LPD. In other words, LPRMON enables Windows clients to print to Unix printers via the Windows 2000 print server running LPRMON.
bulletLPDSVC, which emulates LPD on Windows 2000 print servers. In other words, LPDSVC enables Unix clients to send print jobs to the Windows 2000 print server running LPRMON.

Note that once you have installed these services, you must change the startup configuration of LPDSVC from Manual to Automatic. Note also that not all Unix systems use the same LPR specification, so establishing printing interoperability between Windows 2000 and Unix platforms can sometimes be problematic.

ICM

Windows 2000 supports Image Color Management (ICM) 2.0 in conjunction with better halftone and image processing technologies. This lets users reproduce documents on a printer faster, easier, and with greater color accuracy and consistency.

Tools

CON2PTR

The Con2prt.exe tool is a command-line utility for adding or removing network printers on Windows NT-based computers. You can use the Con2prt.exe tool in a Windows NT login script or in conjunction with an unattended setup of Windows NT. For more info see http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP?LNG=ENG&SA=ALLKB&FR=0

FIXPRNSRV

This program is a powerful tool for working with printer driver issues on Windows NT 4.0 and Windows 2000-based print servers. Fixprnsv.exe can help you resolve printer driver incompatibility issues, as well as perform an on the fly replacement of printer drivers that are known to have problems. Fixprnsv.exe replaces incompatible or problem printer drivers with Microsoft provided printer drivers. Fixprnsv.exe will not install drivers for printers that are not already configured on the print server.

Fixprnsv.exe is in the Printers\Fixprnsv folder on the Windows 2000 Server CD-ROM. The command-line switches for Fixprnsv.exe are:

bullet/?.  When this switch is used, Fixprnsv.exe displays a list of the command line switches with their appropriate syntax.
bullet/diag.  When this switch is used, Fixprnsv.exe scans the computer for incompatible print drivers only. No changes are made.
bullet/fix. When this switch is used on a Windows NT 4.0-based computer, Windows 2000 print drivers can be installed. This permits Windows 2000-based clients to connect to the print server and download the appropriate printer drivers. When this switch is used on a Windows 2000-based computer, any incompatible Windows NT 4.0 printer drivers will be replaced.
bullet/q. Quiet Mode. When this switch is used, Fixprnsv.exe does not prompt the user. Fixprnsv.exe displays any appropriate messages.

XP/.NET server issues

Within XP/.Net server there are additional option to set the notifications to end-users. On the Advanced tab of the Print server properties you can set the following options :

bulletShow informational notifications for local printers.
bulletShow informational notifications for network printers.

Printer notifications for downlevel clients :

bulletNotify when remote documents are printed.
bulletNotify computer, not user, when remote documents are printed.

More information

White papers

bullet Technical overview of Windows Server 2003 print services
bullet Print server upgrade, migration and interoperability
bullet Effectively using internet printing
bullet Print services features
bullet Print services technical overview
bullet Point and print technical overview
bullet Creating high-availability print servers
bullet Terminal services and printing
bullet Printing connectivity technical overview
bullet Print server scalability and sizing technical overview
bullet Choosing the right printer drivers
bullet Print clustering high level overview
bulletFile- and print services technical overview
bulletAdding a new file- and print server to the network
bulletIntegration of Windows 2000 printing with Active Directory

Miscellaneous links

bulletMicrosoft article about EMF
bullet Microsoft article about the spool directory
bullet Microsoft article about network printing
bulletMicrosoft article about internet printing
bullet Connecting to printers (Windows .NET magazine)
bulletEasy printer management with Active Directory (Windows 2000 magazine aug 2000)
bulletPrint operator permissions (Windows 2000 magazine)
bullet Automatically moving users to a new print server (Windows 2000 magazine)
bullet Resource kit printer migration utility (Windows 2000 magazine)
 
bulletPrint anywhere on the web with Windows 2000 internet printing (TechRepublic)
bulletLaser printer terms and technology (TechRepublic)

Search Windows 2000 knowledge base (on title)

bulletSearch for 'printer' in knowledge base
bulletSearch for 'spooler' in knowledge base
bulletSearch for 'emf' in knowledge base
bulletSearch for 'raw' in knowledge base
bulletSearch for 'ipp' in knowledge base
bulletSearch for 'separator' in knowledge base
bulletSearch for 'icm' in knowledge base

XP

bullet Enable or disable print job notifications in Windows XP (Q308217)
bulletInstalling and using printers in Windows XP Professional (InformIT)

Third party tools

bulletEquitrac printlog manager
bulletBlackice internet print server

Last update : 27 January 2003

Questions: