Introdução às DLLs gráficas da 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 o guia de design do aplicativo de suporte Print.
As DLLs gráficas da impressora implementam funções DDI gráfico prefixadas por Drv, conforme descritas em , usando o DDI gráfico. Essas DLLs têm as seguintes duas responsabilidades:
Ajude a GDI na renderização de um trabalho de impressão.
Uma DLL gráfica 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 do GDI.
Entregue um fluxo de dados renderizado para o spooler.
As DLLs gráficas da impressora normalmente produzem um fluxo de saída em um de tipo de dados RAW (incluindo sequências de comando) 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 gráfica 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 quaisquer funções de desenho DDI.
A DLL gráfica fornece algumas funções de desenho 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 gráfica podem, opcionalmente, voltar a chamar os serviços de suporte GDI do mecanismo de renderização GDI.
A DLL gráfica realiza toda a renderização através do fornecimento de funções de desenho DDI de gráficos e usando uma superfície gerida pelo 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 controladores gráficos, consulte Tipos de Superfície e Usar o 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 reprodução de campos eletromagnéticos são combinadas nestas figuras.
O primeiro diagrama representa uma DLL de gráficos de impressora de modo de usuário.
Observação No Windows Vista, as DLLs gráficas de impressora só podem ser executadas no modo de usuário. Para obter mais informações, consulte Escolhendo o Modo de Usuário ou o Modo Kernel.
O segundo diagrama mostra uma DLL de gráficos de impressora em modo kernel.
Note-se nestes diagramas que, se o formato de saída do GDI for metarquivo aprimorado (EMF), a DLL gráfica da impressora não receberá o trabalho até que o processador de impressão EMF reproduza os registos 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 inteiramente 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 para um arquivo local que é enviado para o servidor. A cópia do servidor do spooler lê o ficheiro e envia os registos para o processador de impressão EMF do servidor, e a cópia do servidor do GRE chama a DLL gráfica da impressora do servidor.