Introdução às DLLs de Gráficos de Impressora

Importante

Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft, juntamente com aplicativos de suporte de impressão (PSA), para personalizar a experiência de impressão em 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 de impressão.

As DLLs de gráficos de impressora implementam funções DDI de elementos gráficos prefixados em Drv descritas em Usando a DDI de Elementos Gráficos. Essas DLLs têm as duas seguintes responsabilidades:

  • Ajude 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.

  • Entregue 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 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 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 de elementos gráficos não fornece nenhuma função 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 da GDI, usando uma superfície gerenciada por 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 de GDI do mecanismo de renderização GDI.

  • A DLL gráfica faz toda a renderização fornecendo funções de desenho DDI de elementos gráficos e usando uma superfície gerenciada pelo dispositivo.

Por exemplo, o Driver de Impressora Universal da Microsoft (Unidrv) usa uma superfície gerenciada por GDI e fornece algumas funções de desenho DDI de gráficos, enquanto o Driver de Impressora PostScript da Microsoft usa uma superfície gerenciada pelo dispositivo.

Para obter mais informações sobre como fornecer assistência de renderização em drivers gráficos, consulte Tipos de Surface 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 do EMF são combinadas nesses números.

O primeiro diagrama ilustra uma DLL de gráficos de impressora no modo de usuário.

Nota Em DLLs de gráficos de impressora do Windows Vista, as DLLs 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.

diagrama ilustrando uma dll de gráficos de impressora no modo de usuário.

O segundo diagrama ilustra uma DLL de gráficos de impressora no modo kernel.

imprimir fluxo de dados do trabalho, usando uma dll de gráficos de impressora no modo kernel.

Observe nesses diagramas que, se o formato de saída do GDI for EMF (meta-arquivo avançado), a DLL de elementos gráficos da impressora não receberá o trabalho até que o processador de impressão EMF reproduza os 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 serão produzidos pela cópia do cliente do GRE (mecanismo de renderização GDI) e, em seguida, são enviados para um arquivo local enviado ao servidor. A cópia do servidor do spooler 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 de impressora do servidor.