The primary component of the printing interface is the print spooler. The print spooler is a Windows executable file that manages the printing process. Management of printing involves retrieving the location of the correct printer driver, loading that driver, converting high-level function calls to journal records, storing those journal records on disk as a print job, and so on.
The spooler is loaded at startup and continues to run until the operating system is shut down. Windows Print Manager provides a graphical interface that the user or system administrator can use to access and configure the spooler; however, if Print Manager is disabled or shut down, the spooler continues to run.
Applications that print create a printer DC. When an application creates a printer DC, the spooler performs necessary tasks such as determining the location of the required printer driver and then loading the appropriate printer driver. It also determines the data type used to record the print job. The supported data types include journal records, ASCII text, and PostScript®. A print job is a document stored internally (by using one of the supported data types) that may contain one or more pages of output. It may consist of multiple forms; for example, a job may consist of one envelope and three pages of A4 paper. A print job is defined (or bracketed) by the StartDoc and EndDoc functions.
The default data type for a print job is the journal record. A journal record is a compact structure used to store text output commands, raster graphics commands, and so on. When an application calls StartDoc, the spooler creates a journal file and a data file and begins storing journal records in the journal file. Each time the application calls one of the GDI drawing functions, one or more new journal records are created and stored in the journal file. The journal and data files are created in an operating system directory. The spooler uses the journal file to store journal records and uses the data file to record the type of form, the data type for the print job, the target printer, and so on. These files are deleted by the spooler when the job has successfully printed.