There are a number of components that work together to make the printing process possible. Different components are used at different times, depending on the type of print job being produced and the types of hardware being used.

Graphics Device Interface

The application calls the Graphics Device Interface (GDI) to begin the process of creating a print job. The GDI reads the driver information for the printer to get information about how to format the job. Using the document information from the application and the print device information from the printer driver, GDI renders the print job in the printer language of the printer.

Printer Drivers

Printer drivers contain information that is specific to the printer that is used. Printer drivers reside on users computers and are used by the GDI to render print jobs.

Windows 2000 includes the most common printer drivers, but you might need to provide printer drivers for some printers. When a Windows 2000 user connects to a printer or installs a Plug and Play printer, the necessary printer drivers are loaded onto the users computer, if they are available.

Print Spooler

The print spooler consists of a group of components, including the print router, the local and remote print provider, and the print processor. These components can reside on a computer sending a job and on a network print server receiving print jobs. The print spoolers components take the print job that the GDI has created and modify it so it has all information and formatting necessary to print correctly. If part of the spooler is on a server, the server provides the processing resources for the print job, freeing the users computer and improving performance.

Different print servers have different spooler components. In Windows 2000, the print spooler is comprised of a router, remote print provider, local print provider, print processor, separator page processor, and port print monitors.

Print Router

The print router receives a print job and locates an available print provider that can handle the print jobs protocol. For example, the router might look for a print provider designed to handle RPC print jobs or jobs transferred using HTTP. When an acceptable print provider is found, the router relays the print job from the remote print provider to the chosen local print provider, where the job is modified, if necessary, before printing.

Remote Print Providers

The remote print provider is part of the client side of the print process. The router gives control of the print job to the first remote print provider the router finds that recognizes the destination printer. A remote print provider sends the print job to the server side part of the router.

Examples of remote print providers include the Windows Network Print Provider and the Novell NetWare Remote Print Provider. When a user sends a print job to a printer on a print server, the remote print provider is on the users computer and the local print provider is on the server, counter to how it might be perceived by users.

Local Print Providers

The local print provider receives the print job, writes it to a spool file, and keeps track of information about the job. Spooling a file to disk ensures that the job is saved and printed, even if printers are unavailable or there is a power failure. When a user sends a print job to a printer on a print server, the remote print provider is on the users computer and the local print provider is on the server, counter to how it might be perceived by users.

The local print provider has two components that are invoked as required by the printer type and settings:

  • Print processor: The print processor makes any necessary modifications to the print job. This is necessary in instances where third-party printers have special requirements. Often, no modifications are required by the print processor.

  • Separator page processor: The separator page processor adds separator pages, as required. You may specify different separator pages based on your needs. Most separator pages include information such as the user and computer that created the job or the date and time the job was created.

The escape codes used in creating a separator page are listed in Table 14.6.

Table 14.8 Separator Page Escape Codes and Functions

Escape Code



The first line of the separator file must contain only this character. The separator file interpreter considers this the separator file command delimiter.


Prints the user name of the person who submitted the job.


Prints the job number.


Prints the date the job was printed. The time is displayed in the format specified under Regional Options in Control Panel.

\L xxx

Prints the string of text that appears after the \L escape code. If you were to enter \LTest, the text Test would appear in the separator page.

\F pathname

Prints the contents of the file specified by pathname, starting on an empty line. The contents of this file are copied directly to the printer without processing.

\H nn

Sets a printer-specific control sequence, where nn is a hexadecimal ASCII code sent directly to the printer. To determine the specific numbers, see your printer manual.

\W nn

Sets the width of the separator page. The default width is 80 characters; the maximum width is 256. Any characters beyond this width are truncated.


Prints text in single-width block characters until \U is encountered.


Ejects a page from the printer. Use this code to start a new separator page or to end the separator page file. If you get an extra blank separator page when you print, remove this code from your separator page file.

\ n

Skips the number of lines specified by n (from 0 through 9). Skipping 0 lines simply moves printing to the next line.


Prints text in double-width block characters until \U is encountered.


Turns off block character printing.

After the local print provider has passed a job through the print processor and separator page processor, it sends the job from the spooler to the appropriate port print monitor.

Port Monitors

The Local Print Provider (Localspl.dll) provided with Windows 2000 includes the Local Port Monitor and Winprint print processor. The Local Port Monitor controls the parallel and serial ports to which printers are connected, and the Standard Port Monitor (SPM) is used for most network print jobs. Other ports, such as SCSI or Ethernet, are controlled by port monitors, such as the NetWare Port Monitor or AppleTalk Port Monitor.

Windows 2000 includes port monitors which enable printing to different types of printers in different network environments. Some of the port monitors included with Windows 2000 are described in further detail below:

  • The preferred network port monitor in Windows 2000 is the Standard TCP/IP Port Monitor (SPM), which uses TCP/IP as the transport protocol. SNMP is used to configure and monitor the printer ports. In addition to SPM, Internet printing adds an Hypertext Transport Protocol (HTTP) Port Monitor. All other port monitors that were included with Windows NT 4.0 are also present. For more information, see New Ways to Send Print Jobs earlier in this chapter.

  • Local Port Monitor is the standard monitor for use with printers connected directly to your computer. If you add a printer to your computer by using a serial or parallel port (such as COM1 or LPT1), this is the monitor that is used.

  • LPR Port Monitor is used to send jobs over TCP/IP from the client running Lprmon.dll to a print server running an LPD service. LPR Port Monitor can be used as an alternative to SPM to enable Internet printing, UNIX print servers, or Windows 2000 print servers over a TCP/IP network. The LPR Port Monitor is a two-part port monitor, Lprmon.dll is used on the client side and Lpr.exe is used on the server side. When a job is sent over TCP/IP, the client must have the destination address for the print server, the name of the printer, and instructions on how to print the job. The server must have Lpr.exe installed to receive the job and pass it on to the appropriate printer. Use the LPR Port Monitor if you need an RFC compliant Line Printer Remote (LPR) or to receive jobs from UNIX clients. In any other case use SPM.

  • AppleTalk Port Monitor (Sfmmon.dll) is used to send jobs over the AppleTalk protocol to printers such as LaserWriters or those configured with AppleTalk or any AppleTalk spoolers. To print to LaserWriters using Windows 2000 servers, the servers must have Services for Macintosh, which includes Sfmmon.dll.

  • Hewlett-Packard Network Port Monitor (Hpmon.dll) sends jobs to Hewlett-Packard network adapters. Hpmon.dll uses the DLC network protocol to communicate. Print jobs sent through Hpmon.dll cannot be sent through routers.

  • PJL Monitor (Pjlmon.dll) communicates in printer job language (PJL). Any bidirectional print device that uses PJL can use the PJL language monitor.