Partilhar via


Acesso a Interfaces Plug-In a partir de controladores de impressora

Importante

A moderna plataforma de impressão é o meio preferido do Windows para comunicar com as impressoras. Recomendamos que utilize o controlador de classe da caixa de entrada IPP da Microsoft, juntamente com as Aplicações de Suporte de Impressão (PSA), 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 Guia de design do aplicativo de suporte de impressão v1 e v2.

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 chamada para obter acesso à interface COM do IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPSou IPrintOemPS2:

  1. O driver chama LoadLibrary para carregar a DLL do plug-in, o que desencadeia uma chamada à função DllMain do plug-in.

  2. O driver chama a função DllGetClassObject do plug-in, que retorna um ponteiro para a interface IClassFactory do plug-in.

  3. 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 das interfaces do plug-in: IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni3, IPrintOemPSou IPrintOemPS2, e retorne um ponteiro para a interface IUnknown da instância.

  4. O driver chama o método QueryInterface da interface IUnknown para determinar qual versão da interface IPrintOemUI, da IPrintOemUI2, da IPrintOemUni, da IPrintOemUni2, da IPrintOemUni3, da IPrintOemPSou da interface IPrintOemPS2 é suportada pelo plug-in e para receber um ponteiro para a interface suportada.

  5. 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.

  6. Se o plug-in tiver implementado a interface IPrintOemUni, o driver chamará IPrintOemUni::GetImplementedMethod para determinar quais métodos de interface foram implementados. De forma semelhante, se o plug-in implementou a interface IPrintOemUni2, o driver chama IPrintOemUni2::GetImplementedMethod para a mesma finalidade.