Bidirektionale Kommunikation hinzufügen
Der Spooler bietet Unterstützung für bidirektionale Kommunikation ("BiDi") zwischen einer Anwendung oder einem Treiber und einem Drucker. Diese Unterstützung ermöglicht es der Anwendung oder dem Treiber, eine oder mehrere Anforderungen an den Drucker zu senden, und der Drucker kann auf diese Anforderungen reagieren.
Bidirektionale Kommunikationsanforderungen
Bevor eine Anwendung oder ein Treiber die bidi-Kommunikation verwenden kann, muss sie bidirektionale Kommunikationsschnittstellen implementieren: entweder die IBidiSpl-COM-Schnittstelle oder die IbidiSpl2-COM-Schnittstelle , zusammen mit mindestens einer der COM-Schnittstellen IBidiRequest und IBidiRequestContainer . Darüber hinaus muss eine oder beide der folgenden Punkte zutrifft:
Die SendRecvBidiData-Funktion wird in einer Druckanbieter-DLL implementiert.
Die SendRecvBidiDataFromPort-Funktion wird in einer Sprachmonitorserver-DLL oder in einer Portmonitorserver-DLL implementiert.
Um eine einzelne Anforderung an den Drucker zu senden, muss zuerst eine Anwendung oder ein Druckertreiber die Anforderung verfassen und dann die IBidiSpl::SendRecv-Methode aufrufen. Zum Senden mehrerer Anforderungen erstellt die Anwendung oder der Treiber eine Liste von Anforderungen und ruft dann die IBidiSpl::MultiSendRecv-Methode auf.
Nach dem Empfang der Anforderung übergibt der clientseitige Teil des Spoolers (Winspool.drv) sie an den serverseitigen Spooler (spoolsv.exe). Der serverseitige Spooler kann sich auf dem lokalen Computer oder auf einem Remotenetzwerkdruckserver befinden. Wenn der serverseitige Spooler die Anforderung empfängt, analysiert er die Daten in der Anforderung und füllt die Member einer BIDI_REQUEST_CONTAINER-Struktur aus.
Der serverseitige Spooler ruft dann SendRecvBidiData oder SendRecvBidiDataFromPort auf. Wenn eine Funktion zurückgibt, verweist der ppResData-Parameter auf einen Speicherspeicherort, der die Adresse einer ausgefüllten BIDI_RESPONSE_CONTAINER Struktur enthält, die die Antwort des Druckers enthält. Der serverseitige Spooler konvertiert die Daten in dieser Struktur in ein Formular, das für die Verwendung durch die Anwendung oder den Treiber geeignet ist, und übergibt sie zurück an den clientseitigen Spooler und schließlich zurück an den Absender der Anforderung.