从打印机驱动程序访问插件接口
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
如果安装了 UI 插件或呈现插件,打印机驱动程序(Unidrv 或 Pscript5)将使用以下调用顺序访问插件的 IPrintOemUI、IPrintOemUI2、IPrintOemUni、IPrintOemUni2、IPrintOemUni3、IPrintOemPS 或 IPrintOemPS2 COM 接口:
驱动程序会调用 LoadLibrary 来加载插件 DLL,从而导致调用插件的
DllMain
函数。驱动程序调用插件的
DllGetClassObject
函数,该函数将返回指向插件的 IClassFactory 接口的指针。驱动程序调用 IClassFactory 接口的 CreateInstance 方法,指定 IID_IUnknown 接口标识符,从而使该方法创建插件的 IPrintOemUI、IPrintOemUI2、IPrintOemUni、IPrintOemUni2、IPrintOemUni3、IPrintOemPS 或 IPrintOemPS2 接口的插件实例,并返回指向该实例 IUnknown 接口的指针。
驱动程序调用 IUnknown 接口的 QueryInterface 方法来确定 IPrintOemUI、IPrintOemUI2、IPrintOemUni、IPrintOemUni2、IPrintOemUni3、IPrintOemPS 或 IPrintOemPS2 接口是否受插件支持,并接收指向受支持接口的指针。
驱动程序调用插件接口的
PublishDriverInterface
方法,使驱动程序的 IPrintOemDriverUI、IPrintCoreUI2、IPrintOemDriverUni、IPrintOemDriverPS 或 IPrintCorePS2 接口可供插件使用。如果插件已实现 IPrintOemUni 接口,驱动程序将调用 IPrintOemUni::GetImplementedMethod 来确定哪些接口方法已实现。 同样,如果插件实现了 IPrintOemUni2 接口,驱动程序也会调用 IPrintOemUni2::GetImplementedMethod 来实现同样的目的。