Imprimir um trabalho de impressão
Depois que uma porta for aberta, conforme descrito em Abrir e fechar uma porta, o spooler poderá enviar trabalhos de impressão para a porta.
Cada trabalho de impressão é delimitado por chamadas de spooler para as funções StartDocPort e EndDocPort de um monitor de porta ou idioma. O spooler chama essas funções quando um processador de impressão chama as funções StartDocPrinter e EndDocPrinter do spooler.
Dentro do escopo de um conjunto de funções StartDocPort e EndDocPort , podem ocorrer chamadas ilimitadas de spooler para as funções WritePort, ReadPort e GetPrinterDataFromPort de um monitor.
Cada uma dessas funções requer que o identificador de porta retornado por OpenPortEx (ou OpenPort) seja especificado como no argumento de entrada. Normalmente, um monitor de linguagem implementa cada uma das funções chamando a função de nome semelhante em seu monitor de porta associado.
Quando o spooler chama a função WritePort de um monitor de idioma para enviar um fluxo de dados para a porta, a função geralmente adiciona informações específicas do idioma, como comandos PJL , ao fluxo de dados recebido antes de passá-lo para a função WritePort do monitor de porta associada.
A função ReadPort é usada para obter informações de status de hardware de impressora bidirecional, que um monitor de idioma pode enviar para o spooler chamando SetPort. O spooler não chama a função ReadPort .
Se a impressão de hardware for bidirecional, seu monitor de linguagem e seu monitor de porta deverão dar suporte a uma função GetPrinterDataFromPort . A função GetPrinterDataFromPort de um monitor de idioma deve aceitar um nome de valor do Registro como entrada, obter um valor para esse nome (geralmente chamando as funções WritePort e ReadPort do monitor de porta associada) e retornar o valor para o chamador. A função GetPrinterDataFromPort de um monitor de porta deve aceitar um código de controle de E/S como entrada, chamar DeviceIoControl para passar o código de controle para o driver de porta e retornar o resultado.