Condividi tramite


Stampare un processo di stampa

Dopo l'apertura di una porta, come descritto in Apertura e chiusura di una porta, il spooler può inviare processi di stampa alla porta.

Ogni processo di stampa è delimitato dalle chiamate spooler a una lingua o alle funzioni StartDocPort e EndDocPort di Monitoraggio porta. Il spooler chiama queste funzioni quando un processore di stampa chiama le funzioni StartDocPrinter e EndDocPrinter .

Nell'ambito di un set di funzioni StartDocPort e EndDocPort, è possibile eseguire chiamate spooler illimitate a WritePort, ReadPort e GetPrinterDataFromPort di un monitoraggio.

Ognuna di queste funzioni richiede che l'handle di porta restituito da OpenPortEx (o OpenPort) venga specificato come nell'argomento di input. In genere, un monitoraggio del linguaggio implementa ognuna delle funzioni chiamando la funzione denominata come nel monitoraggio delle porte associato.

Quando lo spooler chiama la funzione WritePort di un monitoraggio del linguaggio per inviare un flusso di dati alla porta, la funzione aggiunge in genere informazioni specifiche del linguaggio, ad esempio comandi PJL , al flusso di dati ricevuto prima di passarlo alla funzione WritePort del monitor della porta associata.

La funzione ReadPort viene usata per ottenere informazioni sullo stato dall'hardware della stampante bidirezionale, che un monitor del linguaggio potrebbe inviare al spooler chiamando SetPort. Il spooler non chiama la funzione ReadPort .

Se l'hardware di stampa è bidirezionale, sia il monitoraggio del linguaggio che il relativo monitoraggio della porta devono supportare una funzione GetPrinterDataFromPort . La funzione GetPrinterDataFromPort di Un monitoraggio del linguaggio deve accettare un nome di valore del Registro di sistema come input, ottenere un valore per tale nome (in genere chiamando le funzioni WritePort e ReadPort del monitoraggio delle porte associate) e restituire il valore al chiamante. La funzione GetPrinterDataFromPort di un monitor della porta deve accettare un codice di controllo I/O come input, chiamare DeviceIoControl per passare il codice di controllo al driver della porta e restituire il risultato.