Windows 3.11 Print Manager Background Printing
Windows 3.11 relied on a dedicated application called Print Manager to facilitate background printing and keep user applications responsive. By utilizing disk-based spooling and the operating system's cooperative multitasking architecture, Print Manager queued print jobs generated by the Graphics Device Interface (GDI) and dispatched them to physical hardware in small increments during idle processor cycles. This mechanism decoupled application performance from the physical speed of the printer, allowing users to regain control of their software while documents were being transferred to local ports or network shares.
When a user initiated a print job in a standard Windows application,
the program rendered the document using Windows GDI calls. Instead of
communicating directly with the hardware port, the GDI passed these
graphical instructions to the installed printer driver. The driver
converted the draw commands into the printer's native page description
language, such as HP PCL or PostScript, and wrote the output directly to
a temporary spool file (typically assigned a .SPL
extension) inside the directory defined by the system's
TEMP environment variable.
Once the application finished writing the spool file, it yielded
execution back to the user, who could continue editing or working in the
software. At this point, the Print Manager (PRINTMAN.EXE)
took ownership of the print job and added it to its active queue. The
Print Manager interface displayed all current jobs, their file sizes,
their progress percentages, and their designated output ports, giving
users the ability to pause, resume, reorder, or cancel jobs awaiting
transmission.
Windows 3.11 utilized 16-bit cooperative multitasking, which meant
the operating system could not forcibly preempt active programs to send
print data. To transmit data in the background, Print Manager relied on
system idle time. When the foreground application checked its message
queue using PeekMessage or GetMessage and
yielded control, the Windows scheduler allowed Print Manager to run.
Print Manager would read a small block of raw data from the temporary
.SPL file and feed it into the output buffer for the
designated port.
At the physical interface level, data transmission was managed
according to the system configuration and mode. In standard
installations or basic configurations, Windows communicated with ports
using MS-DOS (INT 21h) or BIOS (INT 17h) interrupts. In 386 Enhanced
Mode, Windows 3.11 utilized the Virtual Printer Device
(*vpd) driver. This 32-bit virtual device driver bypassed
standard BIOS bottlenecks, handled hardware contention between Windows
applications and DOS sessions, and streamed bytes directly to the
parallel (LPT) or serial (COM) port controllers.
Once the entirety of the spool file had been transferred through the
port and acknowledged by the receiving hardware or printer buffer, Print
Manager removed the entry from its queue and purged the temporary
.SPL file from the disk, freeing up system resources.