Spooler Components and IHV Development Opportunities

The components of the Windows 95 spooler are:

Microsoft provides executables for the router and local print provider which a printer manufacturer cannot replace. For the other four spooler components, Microsoft provides default executables, but printer manufacturers may need to develop another version of one or more of these components to meet special needs.

The primary function of each spooler component is described in the following table, along with a general description of the printer vendor's development responsibilities for each component:

Component/Description Development Requirement for Printer Manufacturer
Print Request Router (PRR): Routes a data stream to the local print provider or to a network print provider. None. Microsoft provides the executable PRR and documents the functions it exports. The PRR cannot be replaced by an IHV.
Local print provider: Puts print jobs into spool files, manages despooling, and performs administrative tasks. In short, the local print provider is in charge of all local playback of spooled print jobs. None. Microsoft provides the local print provider executable and documents the functions it exports. The local print provider cannot be replaced by an IHV.
Network print providers: Manage communication between a network and the Win32 printing API. A network print provider is basically a translation layer that converts print requests from the generic Win32 format to a vendor-specific form that can be used by the network. Printer IHVs typically do not need to develop a network print provider. Network IHVs must develop a network print provider. Microsoft does not provide sample code for a network print provider in the Windows 95 DDK. For guidelines on how to develop a network print provider, see About Net Print Providers.
Print processors: Perform despooling (the conversion of spooled device-independent records into device-specific records). Print processors and printer drivers work together. Microsoft provides a print processor executable that is the default, "WinPrint," and which handles two spool file formats: raw and EMF. Printer vendors may wish to develop another print processor if the vendor supports a spool file format different than the formats supported by the Microsoft-provided print processor. IHVs may also want to develop a print processor that provides filter functions.
Port monitors: Control the I/O port a physical printer is connected to. Typically communicates with VCOMM for device I/O, but may also call different interfaces such as Windows Sockets, SCSI, etc.). None for printers that use parallel or serial ports because Microsoft supplies a port monitor that communicates with VCOMM to enable multiple monitors to share a device. IHVs with printers that connect to other types of ports (such as SCSI or Ethernet LAN cards) will have to develop a port monitor.
Language monitors: Control a bidirectional physical printer. Each language monitor is printer description language-specific. Communicates special printer events to the print provider beyond what parallel port status codes return. If the printer manufacturer's device is bidirectional, the vendor may develop a language monitor for their printer. Microsoft provides sample source code for a PJL language monitor as a starting point. Note that a language monitor is not typically required for nonbidirectional devices.