打印机图形 DLL 简介

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

打印机图形 DLL 实现使用图形 DDI 中所述的 Drv 前缀图形 DDI 函数。 这些 DLL 具有以下两项职责:

  • 协助 GDI 渲染打印作业。

    打印机图形 DLL 可以提供图形 DDI 绘图函数,以处理必须以特定于设备的方式执行的绘图操作,因此不能由 GDI 的渲染引擎独占处理。

  • 将渲染的数据流传送到后台处理程序。

    打印机图形 DLL 通常以 RAW 数据类型(包括命令序列)生成输出流,后台处理程序可以通过打印监视器将其发送到打印机硬件。

打印机图形 DLL 必须提供的渲染帮助量特定于打印机类型,具体取决于硬件的绘图功能,包括以下方案:

  • GDI 渲染引擎使用 GDI 管理的图面执行所有渲染。 图形 DLL 不提供任何 DDI 绘图函数。

  • 图形 DLL 提供一些图形 DDI 绘图函数,以使用 GDI 管理的图面与 GDI 的渲染引擎协同工作。 图形 DLL 提供的图形 DDI 绘图函数可以选择性地回调 GDI 渲染引擎的 GDI 支持服务

  • 图形 DLL 通过提供图形 DDI 绘图函数和使用设备管理的图面来执行所有渲染。

例如,Microsoft 通用打印机驱动程序 (Unidrv) 使用 GDI 管理的图面并提供一些图形 DDI 绘图功能,而 Microsoft PostScript 打印机驱动程序使用设备管理的图面。

有关在图形驱动程序中提供渲染辅助的详细信息,请参阅图面类型使用图形 DDI

以下两个图说明了应用程序使用 GDI 创建打印作业时发生的数据流。 EMF 记录和播放在这些图中结合在一起。

第一个图描述了用户模式打印机图形 DLL。

注意 在 Windows Vista 中,打印机图形 DLL 只能在用户模式下执行。 有关详细信息,请参阅选择用户模式或内核模式

说明用户模式打印机图形 dll 的示意图。

第二个图描述了内核模式打印机图形 DLL。

打印作业数据流,使用内核模式打印机图形 dll。

请注意:在这些图中,如果 GDI 的输出格式是增强式元文件 (EMF),则打印机图形 DLL 在 EMF 打印处理器播放 EMF 记录之前不会接收作业。 另请注意,EMF 打印处理器将输出格式更改为非 EMF。

这些图说明了一个完全本地的环境。 如果打印机连接到服务器,则 EMF 记录通常由客户端的 GDI 渲染引擎 (GRE) 副本生成,然后后台处理到发送到服务器的本地文件。 后台处理程序的服务器副本读取文件,并将记录发送到服务器的 EMF 打印处理器,GRE 的服务器副本调用服务器的打印机图形 DLL。