Improve Printing in Wine

Printing in Windows-NT

Along with various printer drivers, the printing subsystem in Windows NT primarily consists of:

  • the Spooler-Client-API (winspool.drv)

  • the Spooler-Service (spoolss.exe and spoolss.dll)

  • a print processor (the WinPrint object found in localspl.dll)

  • a print provider (either in localspl.dll or win32spl.dll)

  • a (port-)monitor (usbmon.dll, or localmon.dll with localspl.dll)

  • the (port-)monitor user interface (localui.dll)

  • together with the printing dialogs (comdlg32.dll and compstui.dll)

  • and the printer management user interface (printui)

Other important printing functions are also located in parts of the main DLLs:

  • gdi32.dll

  • kernel32.dll

  • shell32.dll

Printing in Wine

Wine provides printing with a simpler infrastructure:

  • the client API (winspool.drv),

  • a built-in PostScript driver (wineps.drv)

  • a Unix printing backend (CUPS, or LPR for BSD)

  • the local port monitor (localspl.dll) was started

  • the local port monitor user interface (localui.dll with printui for a front-end)

  • some core functions in gdi32.dll

What we do not need / will not support

  • Different Printprovider (Remote-Printing)
    • CUPS and LPR can forward our Data
  • The Windows Spooler-Service
    • CUPS and LPR are fine as Spooler
  • RPC between WINSPOOL.DRV and SPOOLSS.EXE/SPOOLSS.DLL

  • A PIPE between an Application and SPOOLSS.EXE/SPOOLSS.DLL

See Also

  • PDF in this Wiki

  • printui in this Wiki: Printer-Management on the commandline

  • RedMon 1.7 in the AppDB

  • DLLTodoList for a list of some places the printing subsystem could still use work.


Workers: DetlefRiekenberg


CategoryDevelopment CategoryPrinting

Printing (last edited 2013-07-28 03:35:37 by KyleAuble)