由打印提供程序定义的函数

警告

从Windows 10开始,支持第三方打印提供程序的 API 已弃用。 Microsoft 不建议对第三方打印提供商进行任何投资。 此外,在提供 v4 打印驱动程序模型的Windows 8和较新的产品上,第三方打印提供程序不得创建或管理使用 v4 打印驱动程序的队列。

本主题列出了打印提供程序可以提供的所有函数。 Microsoft Windows SDK文档中介绍了其中大多数函数。 如果在 Windows 驱动程序工具包 (WDK) 中描述了函数,则函数名称将提供指向关联引用页的链接。

所有打印提供程序都必须为所有列出的函数提供指针。 但是,大多数供应商提供的打印提供程序都是“部分提供程序”,不需要支持函数定义的许多操作。 因此,许多函数指针可以为 NULL。 有关部分打印提供程序的详细信息,请参阅 编写网络打印提供程序

在以下函数列表中,必须支持的函数标记为“必需”。

所有打印提供程序都必须导出初始化函数 InitializePrintProvidor。 指向所有其他函数的指针必须在 PRINTPROVIDOR 结构中提供。 (请注意,这两个名称拼写错误,但与头文件 Winsplp.h.)

函数分为多个组,并显示在以下部分中:

  • 初始化函数

  • 打印队列管理功能

  • 打印机驱动程序管理功能

  • 打印作业创建函数

  • 打印作业计划函数

  • 表单管理功能

  • 打印处理器管理功能

  • 打印监视器管理功能

  • 端口管理功能

  • 注册表管理功能

  • 其他函数

初始化函数

函数 说明
InitializePrintProvidor (必需) 初始化打印提供程序并返回指向提供的函数的指针。
函数 说明
AddPrinter 将打印队列添加到由打印提供程序管理的列表,并将打印处理器与打印队列相关联。
AddPrinterConnection 创建与指定打印队列的连接。
ClosePrinter (必需) 禁用调用方对指定打印队列的访问。
DeletePrinter 从打印提供程序管理的打印队列列表中删除打印队列。
DeletePrinterConnection 删除与指定打印队列的连接。
EnumPrinters (必需) 枚举当前由打印提供程序管理的打印队列的列表。
FindClosePrinterChangeNotification 禁用 由 FindFirstPrinterChangeNotification 启用的打印机更改通知。
FindFirstPrinterChangeNotification 返回等待对象的句柄,调用方可以使用该句柄来等待指定的打印机事件。
GetPrinter (必需) 返回指定打印队列的当前参数值。
OpenPrinter (必需) 允许调用方访问指定的打印队列。
RefreshPrinterChangeNotification 如果客户端使用设置了 PRINTER_NOTIFY_OPTIONS_REFRESH 标志调用 FindNextPrinterChangeNotification ,则由路由器调用。
ResetPrinter 修改打印队列的数据类型或 DEVMODEW 结构。
SetPrinter (必需) 设置指定打印队列的参数。
WaitForPrinterChange 已过时。

打印机驱动程序管理功能

函数 说明
AddPrinterDriver 将指定打印机的驱动程序文件添加到指定的服务器。
AddPrinterDriverEx AddPrinterDriver 相同,具有其他参数。
DeletePrinterDriver 删除对指定服务器上指定打印机驱动程序文件的访问权限。
DeletePrinterDriverEx DeletePrinterDriver 相同,具有其他参数。
EnumPrinterDrivers 返回已通过调用 AddPrinterDriver 或 AddPrinterDriverEx 添加到指定服务器的打印机驱动程序的列表。
GetPrinterDriver 返回有关打印机驱动程序的信息,调用方随后可以将其传递给 AddPrinterDriver。 (通常从 INF 文件获取返回的信息。)
[GetPrinterDriverEx GetPrinterDriver 相同,具有其他参数。
GetPrinterDriverDirectory 返回服务器的打印机驱动程序目录的名称。
函数 说明
AbortPrinter (必需) 尝试从指定的打印队列中删除当前作业。
AddJob (必需) 返回作业标识符和后台打印文件路径。 调用方使用 CreateFileWriteFile 将数据发送到后台处理程序文件。
EndDocPrinter (必需) 执行作业完成操作。
EndPagePrinter 执行页面完成操作。
ReadPrinter 从双向打印机获取状态信息。
ScheduleJob (必需) 通知提供程序可以计划指定的作业。 作业由 之前由 AddJob 返回的作业标识符指定。
StartDocPrinter (必需) 准备打印提供程序以开始后台打印作业。
StartPagePrinter 准备打印提供程序以接收打印作业页。
WritePrinter (必需) 接收打印作业数据流的一部分。

注意

AddJob...ScheduleJob 序列是 StartDocPrinter 的替代方法...EndDocPrinter 序列。

函数 说明
EnumJobs (必需) 返回计划打印作业的列表。
GetJob (必需) 返回作业参数。
SetJob (必需) 取消、暂停、恢复或重启打印作业,或设置作业参数。

表单管理功能

函数 说明
AddForm 将指定窗体添加到可用于指定打印机的窗体列表中。
DeleteForm 从可用于指定打印机的表单列表中删除指定窗体。
EnumForms 返回可用于指定打印机的窗体列表。
GetForm 返回指定窗体的特征。
SetForm 修改指定窗体的特征。
函数 说明
AddPrintProcessor 在指定的服务器上安装打印处理器,并将其添加到打印提供程序可以调用的打印处理器列表中。
DeletePrintProcessor 从打印提供程序可以调用的打印处理器列表中删除打印处理器。
EnumPrintProcessorDataTypes 返回打印提供程序可调用的打印处理器支持的数据类型的列表。
EnumPrintProcessors 返回打印提供程序可以调用的打印处理器列表。
GetPrintProcessorDirectory 返回必须存储打印处理器文件的目录路径。
函数 说明
AddMonitor 将打印监视器添加到打印提供程序可以调用的那些列表。
DeleteMonitor 从打印提供程序可以调用的打印监视器列表中删除打印监视器。
EnumMonitors 返回打印提供程序可以调用的打印监视器的列表。

端口管理功能

函数 说明
AddPort 将打印机端口添加到可用端口列表中,通常通过调用指定端口监视器的 AddPortUI 函数。
AddPortEx (/previous-versions/ff545025 (v%3dvs.85) ) AddPort 相同,具有其他参数。
ConfigurePort (必需) 配置打印机端口,通常通过调用指定端口监视器的 ConfigurePortUI 函数。
DeletePort (必需) 从可用端口列表中删除打印机端口,通常通过调用指定端口监视器的 DeletePortUI 函数。
EnumPorts (必需) 返回可用打印机端口的列表。
SetPort 设置指定打印机端口的参数。

注册表管理功能

函数 说明
DeletePrinterData 删除当前在指定打印机的 PrinterDriverData 键下分配给指定值名称的值。
DeletePrinterDataEx DeletePrinterData 相同,具有其他参数。
DeletePrinterKey 如果指定项及其子项当前存储在注册表中的指定打印机 的 PrinterDriverData 密钥下,则删除这些项。
EnumPrinterData 返回存储在注册表中指定打印机的 PrinterDriverData 键下的每个值名称和当前分配的值。
EnumPrinterDataEx EnumPrinterData 相同,具有其他参数。
EnumPrinterKey 返回当前包含在注册表中的指定项名称下的子项列表。
GetPrinterData 返回当前分配给指定值名称的值,该值存储在注册表中的指定打印机的 PrinterDriverData 键下。
GetPrinterDataEx GetPrinterData 相同,具有其他参数。
SetPrinterData 将指定的值名称和值存储在注册表中的指定打印机 的 PrinterDriverData 键下。
SetPrinterDataEx SetPrinterData 相同,具有其他参数。

其他函数

函数 说明
XcvData 提供端口监视器 UI DLL 和端口监视器服务器 DLL 之间的通信路径。