部分打印提供程序概述

部分提供程序 DLL 通常仅实现用于管理打印队列和打印作业的提供程序函数的自定义版本。 部分提供程序仅在打印客户端系统上执行,并依赖于本地打印提供程序进行驱动程序管理操作和生成打印机数据。 客户端系统上可以存在多个部分提供程序。

打印提供程序定义的 Functions 中,某些函数被标识为“必需”。 部分打印提供程序必须提供所有必需的函数。 部分打印提供程序通常不实现任何可选函数。

所需的函数属于以下函数组:

对于部分打印提供程序,应将打印机端口视为等效于打印队列。 对于接收 PRINTER_INFO_2 结构的任何函数,结构的 pPort 成员应设置为打印队列名称。 因此,如果打印队列名称为 \\Server\Printer1,则端口名称也应为 \\Server\Printer1。 EnumPorts 的部分打印提供程序实现必须返回端口名称 \\Server\Printer1。

打印提供程序简介中所述,应用程序对 OpenPrinter 的调用会导致后台处理程序的路由器调用每个打印提供程序,直到其中一个打印提供程序识别指定的打印队列并返回句柄。

请务必记住,部分打印提供程序不会替换本地提供程序。 创建用户与打印机的连接后,对提供程序函数的每次调用都会通过本地提供程序路由,该提供程序处理调用本身或将其重新路由到部分提供程序。 对标识为“必需”的提供程序函数的所有调用都会从本地提供程序重新路由到相应的部分提供程序。

部分提供程序不生成打印作业;它们依赖于本地提供程序及其 打印处理器 来创建可以发送到打印机 的 RAW 数据 。 当打印处理器调用本地提供程序的 StartDocPrinter 函数 (请参阅 打印作业) ,并且打印队列受分部提供程序支持时,本地提供程序调用部分提供程序的 StartDocPrinter 函数,将 RAW 数据 (作为文件) 提供。 部分提供程序的 StartDocPrinterWritePrinterEndDocPrinter 函数应通过网络将 RAW 数据发送到远程打印队列。