时间是一种很残酷的东西,它只会冲淡能够冲淡的,但也会洗尽铅华帮你留下该留下的。

1.3.4Windows内置打印驱动程序

现在的Windows下的打印机驱动程序通常分为V4打印机驱动程序(V4 Printer Driver)、XPS打印机驱动程序(XPSDrv)、微软通用打印机驱动程序(Microsoft UniversalPrinter Driver)、微软PostScript打印机驱动程序(Microsoft PostScriptPrinter Driver)和微软绘图仪驱动程序(MicrosoftPlotter Driver)。

wKiom1fWD6nxX_l8AAB9clIJqgQ448.png

wKiom1fWD7eS9phYAACNXfE-kuE571.png

wKioL1fWD8SSkRysAABmjMk7Q6E022.png

那么什么是Windows的驱动程序?

为术语驱动程序给出单一的准确定义比较困难。就最基本的意义而言,驱动程序是一个软件组件,可让操作系统和设备彼此通信。例如,假设应用程序需要从设备中读取某些数据。应用程序会调用由操作系统实现的函数,操作系统会调用由驱动程序实现的函数。驱动程序(由设计和制造该设备的同一公司编写)了解如何与设备硬件通信以获取数据。当驱动程序从设备获取数据后,它会将数据返回到操作系统,操作系统将数据返回至应用程序。

wKioL1fWD-WxyU0GAAAYAalv2e8128.png

当然上面的定义严格上并不准确,并非所有驱动程序都必须由设计该设备的公司编写。在多种情形下,设备根据已发布的硬件标准来设计。这表示驱动程序可以由操作系统编写,设备设计者无须提供驱动程序。也并非所有驱动程序都直接与设备通信。对于给定的 I/O 请求(如从设备读取数据),通常有一些驱动程序(在堆栈中进行分层)参与该请求。可视化堆栈的传统方式是将第一个参与对象放在顶部,将最后一个参与对象放在底部,如此图所示。堆栈中的某些驱动程序可能通过将请求从一种格式转换至另一种格式来参与。这些驱动程序不会与设备直接通信;它们只操纵请求并将请求传递至堆栈下方的驱动程序。

wKioL1fWD_zybbt-AAAoFGP4Afw359.png

 

1.3.4.1V4打印机驱动程序(V4 Printer Driver

微软在Windwos 8推出的时候在其系统中集成一个最新的打印机驱动程序,命名为V4打印机驱动程序?为什么命名V4打印机驱动程序呢?名为V4版本,主要是V4Windows打印机驱动程序架构的第四代,其上一代V3主要用于从Windows 2000Windows 7的历代版本中,而第一、二代则服务于Windows 1.0Windows ME的各操作系统。最新V4打印驱动架构带来了更小、更快打印机驱动程序,它支持一个打印类(Print class)驱动框架--该系统允许用户在无需定位一款设备驱动的情况下安装打印机,从而使打印机更快的进入工作状态。对于更小的解读,是所指驱动程序的大小,比如说以前Windows Vista 的驱动程序所占空间为768MBWin7下约446M的驱动,在V4的版本中减少到了184MB

微软新开发的这个V4驱动程序,提供了支持 PostScript 和非 PostScript 打印机以及绘图仪的单个内置类驱动程序。该驱动程序可取代 Microsoft 绘图仪驱动程序、Microsoft 通用打印机驱动程序和 Microsoft PostScript 打印机驱动程序。该打印机驱动程序可通过自身提供基本的打印支持,无需任何修改。也就是说V4驱动程序将以前的这个驱动程序都包含在内,形成一个统一的驱动程序架构,同时现有的Windows系统因为需要兼容老旧打印机的需要,专业单独提供以前的Microsoft 绘图仪驱动程序、Microsoft 通用打印机驱动程序和 Microsoft PostScript 打印机驱动程序。共同形成了今天Window系统的打印机驱动程序种类。

下图显示了基于V4打印机驱动的架构:

wKiom1fWEBqRa4fNAADMoAfQWkc116.png

上面是一个v4的打印驱动程序的架构图,在图中,除了渲染组件和用户界面的应用程序外,所有图中的其它功能块都由微软实现。其中蓝色框表示在V3的驱动程序模型中已经存在或利旧使用的现有文件,绿色框表示是V4模型中新的增加的功能模块。

旧驱动程序模型和 V4驱动程序模型之间的一个较大改变在于UI提供的方式。在旧打印机驱动程序模型中,配置UI内置于驱动程序之中。在V4驱动程序模型中,制造商的UI与他们的驱动程序完全分离。基于以下原因,这是一个更佳的体系结构决策:控制打印机的UI现在是一个可在从Metro风格应用程序或桌面应用程序打印时调用的应用程序。这可让打印机制造商为用户提供更丰富的体验。

借助 V4驱动程序模型,微软还大幅改变了打印机驱动程序的安装过程。在 Windows 7Windows较早版本中,所有打印机驱动程序都存储于驱动程序存储单元中,这有点类似于所有驱动程序类型的数据库。当用户接入打印机时,微软将在驱动程序存储单元中查找适当的驱动程序,并将其复制到一个特定的位置,在此后台处理程序可与用户的打印机共同使用该驱动程序。而在 V4中,微软消除了额外的复制造作,从而显著减少了磁盘的 I/O。打印后台处理程序在V4中可以很容易的了解如何在驱动程序存储单元中查找驱动程序。

对于通过渲染将打印任务转化为打印设备的页面描述语言,V4的打印驱动程序模型使用的XPSDrv渲染模块。

下图显示了V4打印机驱动程序渲染架构图。

wKiom1fWEDOzEJwaAAEKMO8Jl8g483.png

下文将说明上图中的流程进行简要说明,在图中,蓝色的部分就是需要打印机硬件厂家去开发或者说可以开发的功能模块。

对于XPS的应用程序,直接转入XPS Spool File里面进行存储,如果是基于GDI的应用程序,就需要经过MXDC模块的转换,从GDI转为XPS,再导入到XPS Spool File中,在之后有一个XPSDrv渲染组件,该模块有两个,一个是提供给打印机硬件厂家,打印机厂家可以自定义该组件的渲染处理器,然后将其渲染为自家的打印机PDL