Visão geral dos provedores de impressão parcial
Uma DLL de provedor parcial normalmente implementa versões personalizadas apenas das funções de provedor que gerenciam filas de impressão e trabalhos de impressão. O provedor parcial é executado somente no sistema cliente de impressão e depende do provedor de impressão local para operações de gerenciamento de driver e para gerar dados de impressora. Vários provedores parciais podem existir em um sistema cliente.
Em Funções definidas por provedores de impressão, determinadas funções são identificadas como "obrigatórias". Os provedores de impressão parcial devem fornecer todas as funções necessárias. Os provedores de impressão parcial geralmente não implementam nenhuma das funções opcionais.
As funções necessárias pertencem aos seguintes grupos de funções:
Para provedores de impressão parcial, as portas da impressora devem ser consideradas equivalentes às filas de impressão. Para qualquer função que receba uma estrutura PRINTER_INFO_2 , o membro pPort da estrutura deve ser definido como o nome da fila de impressão. Portanto, se o nome da fila de impressão for \\Server\Printer1, o nome da porta também deverá ser \\Server\Printer1. A implementação parcial do provedor de impressão de EnumPorts deve retornar um nome de porta \\Server\Printer1.
Conforme descrito em Introdução aos Provedores de Impressão, a chamada de um aplicativo para OpenPrinter faz com que o roteador do spooler chame cada provedor de impressão até que um deles reconheça a fila de impressão especificada e retorne um identificador.
É importante lembrar que um provedor de impressão parcial não substitui o provedor local. Depois que uma conexão de usuário com uma impressora é criada, cada chamada para uma função de provedor é roteada por meio do provedor local, que manipula a chamada em si ou a redireciona para um provedor parcial. Todas as chamadas para funções de provedor identificadas como "obrigatórias" são redirecionadas do provedor local para o provedor parcial apropriado.
Provedores parciais não geram trabalhos de impressão; eles dependem do provedor local e de seus processadores de impressão para criar dados RAW que podem ser enviados para uma impressora. Quando um processador de impressão chama a função StartDocPrinter do provedor local (consulte Imprimindo um trabalho de impressão) e a fila de impressão tem suporte de um provedor parcial, o provedor local chama a função StartDocPrinter do provedor parcial, fornecendo os dados RAW (como um arquivo). As funções StartDocPrinter, WritePrinter e EndDocPrinter do provedor parcial devem enviar os dados RAW pela rede para a fila de impressão remota.