Imprimer un travail d’impression
Une fois qu’un port a été ouvert, comme décrit dans Ouverture et fermeture d’un port, le spouleur peut envoyer des travaux d’impression au port.
Chaque travail d’impression est délimité par des appels de spouleurs aux fonctions StartDocPort et EndDocPort d’un moniteur de langue ou de port. Le spouleur appelle ces fonctions lorsqu’un processeur d’impression appelle les fonctions StartDocPrinter et EndDocPrinter du spouleur.
Dans l’étendue d’un ensemble de fonctions StartDocPort et EndDocPort , des appels illimités de spouleurs aux fonctions WritePort, ReadPort et GetPrinterDataFromPort d’un moniteur peuvent se produire.
Chacune de ces fonctions nécessite que le handle de port retourné par OpenPortEx (ou OpenPort) soit spécifié comme dans l’argument d’entrée. En règle générale, un moniteur de langage implémente chacune des fonctions en appelant la fonction au nom semblable dans son moniteur de port associé.
Lorsque le spouleur appelle la fonction WritePort d’un moniteur de langue pour envoyer un flux de données au port, la fonction ajoute généralement des informations spécifiques à la langue, telles que des commandes PJL , au flux de données reçu avant de les transmettre à la fonction WritePort du moniteur de port associée.
La fonction ReadPort est utilisée pour obtenir des informations status à partir du matériel d’imprimante bidirectionnel, qu’un moniteur de langue peut envoyer au spouleur en appelant SetPort. Le spouleur n’appelle pas la fonction ReadPort .
Si le matériel d’impression est bidirectionnel, son moniteur de langue et son moniteur de port doivent prendre en charge une fonction GetPrinterDataFromPort . La fonction GetPrinterDataFromPort d’un moniteur de langage doit accepter un nom de valeur de Registre en tant qu’entrée, obtenir une valeur pour ce nom (généralement en appelant les fonctions WritePort et ReadPort du moniteur de port associés) et renvoyer la valeur à l’appelant. La fonction GetPrinterDataFromPort d’un moniteur de port doit accepter un code de contrôle d’E/S en tant qu’entrée, appeler DeviceIoControl pour passer le code de contrôle au pilote de port et retourner le résultat.