Basic Printing Architecture
https://blogs.technet.microsoft.com/askperf/2007/06/19/basic-printing-architecture/
Printer sharing, information retrieval, and data storage are among the most frequently used network services. This also means that when something major happens to a print server or file server – lots of people are adversely affected. Issues with Print Servers and the Print Spooler are very common issues for the Performance team. So today, we’re going to kick off our series of posts on Printing with an overview of the Windows Printing Architecture and the Print Spooler.
Broken down into basic elements, the Windows printing architecture consists of a print spooler and a set of print drivers. The print spooler is the primary component of the printing interface. Most administrators are familiar with the spooler as an executable file (spoolsv.exe) that manages the printing process. In a default configuration, the spooler is loaded at system startup and continues to run until the operating system is shut down. The print spooler consists of a set of Microsoft and vendor components that perform the following tasks:
- Should a print job be handled locally or across a network?
- Accepting a data stream created by GDI, in conjunction with a printer driver, for output on a particular printer type
- Spooling the data to a file
- Selecting the first available physical printer in a logical printer queue
- Converting a data stream from a spooled format such as EMF to a format that can be sent to the printer hardware (such as PCL)
- Sending a data stream to printer hardware
- Maintaining the registry database for spooler components and printer forms
Below is a simplified view of the print spooler components. When looking at this diagram, if the printer hardware is local to the system, then the “client” and “server” pieces are all on the same machine.

Application – The print application creates a print job by calling Graphics Device Interface (GDI) functions
GDI – GDI includes user-mode and kernel-mode components. The user-mode component, Microsoft Win32 GDI, is used by Win32 applications that require graphics support. The kernel-mode component, the graphics engine, exports services and functions that graphics device drivers can use
Winspool.drv – This is the client interface into the spooler.
Spoolsv.exe – This is the spooler’s API server. It is implemented as a service when the OS is started
Spoolss.dll – Spoolss.dll acts as a router, determining which print provider to call based on a printer name or handle supplied with each function call. It then passes the function call to the correct provider.
OK – so let’s discuss print providers. The print provider is responsible for several functions, including directing print jobs to local or remote print devices and print queue management operations such as starting, stopping and enumerating print queues. Print providers implement a common set of capabilities that are defined by a set of API functions. These functions are called by spoolss.dll. The diagram below illustrates possible flow paths involving different print providers.

The following print providers are supplied by Microsoft in Windows 2000, XP & Windows Server 2003:
localspl.dll – this is the local print provider which handles all print jobs directed to local printers
win32spl.dll – this is the Windows network print provider. All print jobs directed to remote servers and handled by this provider. When the job arrives at the remote server it is passed to the server’s local print provider
nwprovau.dll – Novell NetWare print provider
inetpp.dll – HTTP print provider which handles print jobs sent to a URL
Printer manufacturers may also create their own network print providers.
And that brings us to Print Processors. Print processors are user-mode DLL files that convert the spooled data from a print job into a format that is understood by a print monitor. When a print job is spooled, the data is contained in a spool file. The print processor reads the file, performs the conversion on the data stream and writes the converted data to the spooler. The spooler sends the data to the correct print monitor. Print processors are associated with printer drivers during driver installation. The default Print Processor provided with the operating system is winprint.dll.
Lastly, let’s talk about Print Monitors. These are user-mode DLL’s responsible for directing a print data stream from the spooler to an appropriate port driver. When we talk about print monitors we are actually referring to two different types of monitor. First, there is the language monitor which provides a full-duplex communications path between the print spooler and bi-directional printers that are capable of providing software-accessible status information. In addition, the language monitors add printer control information to the data stream. It is important to note that Language monitors can be used to add any post spooling processing. In addition to the Language monitors, we also have Port monitors. These are responsible for providing a communications path between the user-mode print spooler and the kernel-mode port drivers that access I/O port hardware. Port monitors are, as the name suggests, responsible for management and configuration of the printer ports on a server.
And that will do it for our look at the Basic Printing Architecture. In future posts, we will be looking at drivers, troubleshooting and policies. Until next time …
Additional Resources:
- MSDN – Print Spooler Components
- MSDN – Introduction to Print Processors
- Windows 2000 and Windows Server 2003 Printing Architecture
- Windows Server 2003 Print Services
Basic Printing Architecture的更多相关文章
- Printing Architecture
Printing Architecture http://www.codeproject.com/Articles/8916/Printing-Architecture This articl ...
- Basic Router Architecture
from the book principles and practices of interconnection networks the chapter router architecture ...
- Struts 2 Tutorial Basic MVC Architecture
Model View Controller or MVC as it is popularly called, is a software design pattern for developing ...
- Chromium Graphics: Compositor Thread Architecture
Compositor Thread Architecture <jamesr, enne, vangelis, nduca> @chromium.org Goals The main re ...
- Nginx Tutorial #1: Basic Concepts(转)
add by zhj: 文章写的很好,适合初学者 原文:https://www.netguru.com/codestories/nginx-tutorial-basics-concepts Intro ...
- Framework for Graphics Animation and Compositing Operations
FIELD OF THE DISCLOSURE The subject matter of the present disclosure relates to a framework for hand ...
- Command and Query Responsibility Segregation (CQRS) Pattern 命令和查询职责分离(CQRS)模式
Segregate operations that read data from operations that update data by using separate interfaces. T ...
- RNN 入门教程 Part 4 – 实现 RNN-LSTM 和 GRU 模型
转载 - Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano ...
- bluetooth service uuid
转自:https://www.bluetooth.com/specifications/assigned-numbers/service-discovery service discovery ...
随机推荐
- openssl生成自签名证书
1.生成x509格式的CA自签名证书 openssl req -new -x509 -keyout ca.key -out ca.crt 2.生成服务端的私钥(key文件)及申请证书文件csr文件 o ...
- centos系统安装中文字体几种方法
我们知道centos是基于linux内核的这款系统默认是不带中文字体了,如果我们要使用中文字体就需要自行安装了,下面一起来看看吧. 前天有用户反应,生成的报到单中他的名字少了一个字.仔细检查了一下 ...
- Android常用的物理按键及其触发事件
Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可:当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用.不过,为了侦听这个 ...
- git clone之后自动checkout文件处理
这个问题发生是因为不同操作系统的行结束符不一致导致的,可在clone之后在仓库根目录修改.gitattributes文件 简单处理的话,注释* text=auto这行即可.也可根据不同系统,做相应设定 ...
- 两台Linux机之间传送文件
最近实验室里接管了一台服务器,经常需要用到服务器与自己主机之间进行文件传输,因此,在此介绍一下两台Linux主机之间的一些操作,方便后来者. 1. Linux.Windows主机远程访问Linux服务 ...
- VS中批量删除cs代码中的#region和#endregion
Visual Studio中如何批量删除cs代码中的#region和#endregion,不删除它们中间的代码,只删除这两个标记及标记的注解的方法.Vs中提供了很强大的文本查找与替换功能,简单的替换只 ...
- Java基础知识强化84:System类之exit()方法和currentTimeMillis()方法
1. exit方法: public static void exit(int status): 终止当前正在运行的Java虚拟机.参数用作状态码:根据惯例,非0的状态码表示异常终止. 调用System ...
- IntelliJIdea快捷键
Ctrl+Shift+方向键Up/Down 代码向上/下移动. Ctrl+X 删除行 Ctrl+Y 也是删除行,不知道有啥区别 Ctrl+D 复制行 Ctrl+Alt+L 格式化代码 Ctrl+N 查 ...
- android的task任务栈
转自http://blog.csdn.net/liuhe688/article/details/6761337 古人學問無遺力,少壯工夫老始成.紙上得來終覺淺,絕知此事要躬行.南宋.陸遊<冬夜讀 ...
- ASPNET 5
1. 什么是APS.NET 5 ASP.NET 5是一个可构建基于云服务的Web应用的构架,并且它是开源的和跨平台的.我们提供了重新设计的一个可以部署在本地和云服务的优化框架.它由一个一个模块组成,因 ...