Aggiungere comunicazioni bidirezionali

Il spooler fornisce supporto per la comunicazione bidirezionale ("BiDi") tra un'applicazione o un driver e una stampante. Questo supporto consente all'applicazione o al driver di inviare una o più richieste alla stampante e alla stampante di rispondere a queste richieste.

diagramma che illustra l'architettura di supporto bidirezionale.

Requisiti di comunicazione bidirezionale

Prima che un'applicazione o un driver possa usare la comunicazione bidi, deve implementare interfacce di comunicazione bidirezionali: l'interfaccia COM IBidiSpl o l'interfaccia COM IbidiSpl2, insieme a almeno una delle interfacce COM IBidiRequest e IBidiRequestContainer. Inoltre, uno o entrambi i seguenti devono essere true:

Per inviare una singola richiesta alla stampante, un driver dell'applicazione o della stampante deve prima comporre la richiesta e quindi chiamare il metodo IBidiSpl::SendRecv. Per inviare più richieste, l'applicazione o il driver compone un elenco di richieste e quindi chiama il metodo IBidiSpl::MultiSendRecv .

Dopo aver ricevuto la richiesta, la parte lato client del spooler (Winspool.drv) lo passa al spooler lato server (spoolsv.exe). Il server-side spooler può trovarsi nel computer locale o in un server di stampa di rete remota. Quando il spooler lato server riceve la richiesta, analizza i dati nella richiesta e compila i membri di una struttura BIDI_REQUEST_CONTAINER .

Lo spooler lato server chiama quindi SendRecvBidiData o SendRecvBidiDataFromPort. Quando una funzione restituisce, il parametro ppResData punta a una posizione di memoria contenente l'indirizzo di una struttura di BIDI_RESPONSE_CONTAINER compilata che contiene la risposta della stampante. Lo spooler lato server converte i dati in questa struttura in un modulo adatto per l'uso da parte dell'applicazione o del driver e lo passa al spooler lato client e infine torna all'origine della richiesta.