Acceso a interfaces de complemento desde controladores de impresora
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
Si se instala un complemento de interfaz de usuario o de representación, el controlador de impresora (Unidrv o Pscript5) usa la siguiente secuencia de llamada para obtener acceso a la interfaz COM IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS o IPrintOemPS2 del complemento:
El controlador llama a LoadLibrary para cargar el archivo DLL del complemento, lo que provoca una llamada a la función
DllMain
del complemento.El controlador llama a la función
DllGetClassObject
del complemento, que devuelve un puntero a la interfaz IClassFactory del complemento.El controlador llama al método CreateInstance de la interfaz IClassFactory, especificando un identificador de interfaz de IID_IUnknown, que hace que el método cree una instancia de la interfaz IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS o IPrintOemPS2 del complemento y devuelva un puntero a la interfaz IUnknown de la instancia.
El controlador llama al método QueryInterface de la interfaz IUnknown para determinar qué versión de la interfaz IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS o IPrintOemPS2 es compatible con el complemento y para recibir un puntero a la interfaz admitida.
El controlador llama al método
PublishDriverInterface
de la interfaz del complemento para que la interfaz IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS o IPrintCorePS2 del controlador esté disponible para el complemento.Si el complemento ha implementado la interfaz IPrintOemUni, el controlador llama a IPrintOemUni::GetImplementedMethod para determinar qué métodos de interfaz se han implementado. Del mismo modo, si el complemento ha implementado la interfaz IPrintOemUni2, el controlador llama a IPrintOemUni2::GetImplementedMethod para el mismo propósito.