Introdução às DLLs de gráficos da impressora
Importante
A plataforma de impressão moderna é o meio preferencial 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.
As DLLs de gráficos de impressora implementam funções DDI de gráficos prefixados por Drv descritas em Usando a DDI de gráficos. Essas DLLs têm as duas responsabilidades a seguir:
Auxiliar a GDI na renderização de um trabalho de impressão.
Uma DLL de gráficos de impressora pode fornecer funções de desenho DDI de gráficos para lidar com operações de desenho que devem ser executadas de maneira específica do dispositivo e, portanto, não podem ser tratadas exclusivamente pelo mecanismo de renderização da GDI.
Forneça um fluxo de dados renderizado para o spooler.
As DLLs de gráficos de impressora normalmente produzem um fluxo de saída em um tipo de dados RAW (incluindo sequências de comandos) que o spooler pode enviar para o hardware da impressora por meio de monitores de impressão.
A quantidade de assistência de renderização que uma DLL de gráficos de impressora deve fornecer é específica do tipo de impressora, dependendo dos recursos de desenho do hardware, e inclui os seguintes cenários:
O mecanismo de renderização GDI faz toda a renderização, usando uma superfície gerenciada por GDI. A DLL gráfica não fornece nenhuma função de desenho DDI.
A DLL de gráficos fornece algumas funções de desenho de DDI de gráficos para trabalhar em conjunto com o mecanismo de renderização do GDI, usando uma superfície gerenciada pelo GDI. As funções de desenho DDI de gráficos fornecidas pela DLL de gráficos podem, opcionalmente, chamar de volta para os serviços de suporte GDI do mecanismo de renderização de GDI.
A DLL de gráficos faz toda a renderização fornecendo funções de desenho DDI de gráficos e usando uma superfície gerenciada por dispositivo.
Por exemplo, o Microsoft Universal Printer Driver (Unidrv) usa uma superfície gerenciada por GDI e fornece algumas funções de desenho DDI de gráficos, enquanto o Microsoft PostScript Printer Driver usa uma superfície gerenciada por dispositivo.
Para obter mais informações sobre como fornecer assistência de renderização em drivers gráficos, consulte Tipos de superfície e Usando a DDI de gráficos.
As duas figuras a seguir ilustram o fluxo de dados que ocorre quando um aplicativo cria um trabalho de impressão usando GDI. A gravação e a reprodução de campos eletromagnéticos são combinadas nessas figuras.
O primeiro diagrama ilustra uma DLL de gráficos de impressora no modo de usuário.
Observação No Windows Vista, as DLLs de gráficos de impressora só podem ser executadas no modo de usuário. Para obter mais informações, consulte Escolhendo o Modo Usuário ou o Modo Kernel.
O segundo diagrama descreve uma DLL de gráficos de impressora no modo kernel.
Observe nesses diagramas que, se o formato de saída do GDI for EMF (metarquivo aprimorado), a DLL gráfica da impressora não receberá o trabalho até que o processador de impressão EMF reproduza registros EMF. Observe também que o processador de impressão EMF altera o formato de saída para não EMF.
Os diagramas ilustram um ambiente totalmente local. Se a impressora estiver conectada a um servidor, os registros EMF normalmente são produzidos pela cópia do cliente do mecanismo de renderização GDI (GRE) e, em seguida, colocados em spool em um arquivo local que é enviado ao servidor. A cópia do spooler do servidor lê o arquivo e envia os registros para o processador de impressão EMF do servidor, e a cópia do servidor do GRE chama a DLL de gráficos da impressora do servidor.