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

重要

建议使用 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 接口的指针。 请注意,驱动程序在返回指向插件的接口指针之前, (Windows SDK 文档) 中所述调用接口的 AddRef 方法。 插件应保存此指针,以便稍后使用它来调用接口方法。

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

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