打印功能的 Win32 API 支持
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
Windows Vista 打印子系统提供兼容性支持,使 Windows Presentation Foundation (WPF) 应用程序能够使用基于 GDI 的打印驱动程序,并使基于 Microsoft Win32 的应用程序能够使用 XPSDrv 打印驱动程序。 此兼容性是通过一层软件托管程序来实现的。 托管程序是对数据进行转换操作的软件模块,使原本不兼容的软件能够实现互操作。 下图显示了打印功能实现的数据路径。
XPSDrv 打印驱动程序和基于 GDI 的版本 3 打印驱动程序都支持 DrvDeviceCapabilities 函数。 当 Win32 应用程序调用 DrvDeviceCapabilities 或 GetDevCap 函数时,打印子系统将调用 DrvDeviceCapabilities,以便从打印驱动程序中收集设备功能信息。
当 WPF 应用程序向打印驱动程序请求 PrintCapabilities 文档时,打印子系统将执行以下操作之一:
如果打印驱动程序支持 IPrintTicketProvider 接口,打印子系统将使用 IPrintTicketProvider::GetPrintCapabilities 方法查询打印驱动程序的 PrintCapabilities 文档。
如果打印驱动程序不支持 IPrintTicketProvider 接口,打印票证管理器将查询打印驱动程序的 DrvDeviceCapabilities 函数,并使用返回的信息创建打印票证文档,然后再返回给应用程序。
有关 Microsoft 打印驱动程序如何支持 IPrintTicketProvider 接口的详细信息,请参阅 Windows Vista 中的打印机驱动程序和插件接口设计。