从插件访问打印机驱动程序接口

重要

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

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

如果插件调用的方法属于驱动程序提供的 IPrintOemDriverUIIPrintCoreHelperPSIPrintCoreHelperUniIPrintCoreUI2IPrintOemDriverUniIPrintOemDriverPSIPrintCorePS2 COM 接口时,必须按以下方式从驱动程序获取接口指针:

  1. 该插件必须实现 IPrintOemUI、IPrintOemUI2、IPrintOemUni、IPrintOemUni2、IPrintOemPS 或 IPrintOemPS2 接口的 PublishDriverInterface 方法。

  2. 当驱动程序(Unidrv 或 Pscript5)调用插件的 PublishDriverInterface 方法时,它会提供一个指向 IPrintOemDriverUI、IPrintCoreUI2IPrintOemDriverUniIPrintOemDriverPSIPrintCorePS2 实例的 IUnknown 接口的指针。

  3. 插件必须使用 IUnknown 接口指针调用 IUnknown::QueryInterface,指定代表所需版本的 IPrintOemDriverUIIPrintCoreUI2IPrintOemDriverUniIPrintOemDriverPSIPrintCorePS2 接口的接口标识符。 (有关详细信息,请参阅打印机驱动程序的接口标识符。)

  4. 如果插件指定了代表驱动程序支持的接口版本的接口标识符,QueryInterface 将返回指向 IPrintOemDriverUIIPrintCoreUI2IPrintOemDriverUniIPrintOemDriverPSIPrintCorePS2 接口的指针。 请注意,在将接口指针返回插件之前,驱动程序会调用接口的 AddRef 方法(如 Windows SDK 文档中所述)。 插件应保存该指针,以便以后调用接口方法时使用。

  5. 当不再需要 IPrintOemDriverUIIPrintCoreUI2IPrintOemDriverUniIPrintOemDriverPSIPrintCorePS2 接口指针时,插件必须调用接口的 Release 方法(如 Windows SDK 文档中所述)。

要让插件使用新的 Windows Vista IPrintCoreHelperPSIPrintCoreHelperUni 接口,插件需要在其 IPrintOemUI::GetInfoIPrintOemPS::GetInfoIPrintOemUni::GetInfo 方法中添加对 OEMGI_GETREQUESTEDHELPERINTERFACES 的支持。