Publicando as interfaces
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.
Os plug-ins normalmente recebem instâncias de objetos que implementam o comportamento nos drivers principais por um mecanismo chamado publicação. As interfaces auxiliares IPrintCoreHelper, IPrintCoreHelperPS e IPrintCoreHelperUni são publicadas por meio desse mesmo modelo, com algumas pequenas diferenças.
As listas a seguir resumem a ordem na qual os objetos são publicados na interface do usuário (interface do usuário) e nos módulos de renderização, para Unidrv e Pscript5. Para cada um dos quatro módulos, o número na lista indica a ordem na qual um objeto é publicado e as interfaces COM nomeadas indicam quais interfaces o objeto implementa.
Em qualquer módulo, o driver deve manter apenas um dos objetos publicados salvando um ponteiro e chamando o método AddRef nesse objeto. Depois que o plug-in armazena a referência ao objeto, o plug-in deve retornar S_OK. O driver principal interromperá a publicação de interfaces. Este modelo não é significativamente diferente do mecanismo de publicação anterior.
No contexto da interface do usuário, os objetos são publicados na interface IPrintOemUI na classe cujo identificador de classe é CLSID_OEMUI. No contexto de renderização, os objetos são publicados nas interfaces IPrintOemPS ou IPrintOemUni.
Os objetos marcados com um asterisco (*) nas listas a seguir são publicados na interface IPrintOemPrintTicketProvider.
Ordem de publicação do módulo Unidrv UI
IUnknown e *IPrintCoreHelper e IPrintCoreHelperUni
IUnknown e IPrintOemDriverUI
Ordem de publicação do módulo de renderização Unidrv
IUnknown e *IPrintCoreHelper e IPrintCoreHelperUni
IUnknown e IPrintOemDriverUni
Ordem de publicação do módulo de interface do usuário pscript5
IUnknown e *IPrintCoreHelper e IPrintCoreHelperPS
IUnknown e IPrintCoreUI2
IUnknown e IPrintOemDriverUI
Ordem de publicação do módulo de renderização Pscript5
IUnknown e *IPrintCoreHelper e IPrintCoreHelperPS
IUnknown e IPrintCorePS2