Acessando interfaces de plug-in de drivers de impressora
Importante
A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
Se um plug-in de interface do usuário ou plug-in de renderização estiver instalado, o driver de impressora (Unidrv ou Pscript5) usará a seguinte sequência de chamadas para obter acesso à interface COM IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS, ou IPrintOemPS2:
O driver chama LoadLibrary para carregar a DLL do plug-in, o que causa uma chamada para a função do plug-in
DllMain
.O driver chama a função do plug-in
DllGetClassObject
, que retorna um ponteiro para a interface IClassFactory do plug-in.O driver chama o método CreateInstance da interface IClassFactory, especificando um identificador de interface de IID_IUnknown, o que faz com que o método crie uma instância da interface IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS, ou IPrintOemPS2 e retorne um ponteiro para a interface IUnknown da instância.
O driver chama o método QueryInterface da interface IUnknown para determinar qual versão da interface IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPS ou IPrintOemPS2 tem suporte do plug-in e para receber um ponteiro para a interface com suporte.
O driver chama o método
PublishDriverInterface
da interface do plug-in para disponibilizar a interface IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS ou IPrintCorePS2 do driver para o plug-in.Se o plug-in implementou a interface IPrintOemUni, o driver chamará IPrintOemUni::GetImplementedMethod para determinar quais métodos de interface foram implementados. Da mesma forma, se o plug-in implementou a interface IPrintOemUni2, o driver chamará IPrintOemUni2::GetImplementedMethod para a mesma finalidade.