新增雙向通訊

多任務緩衝處理支援應用程式或驅動程式與印表機之間的雙向 (「BiDi」) 通訊。 此支援可讓應用程式或驅動程式將一或多個要求傳送至印表機,以及印表機以回應這些要求。

說明雙向支援架構的圖表。

雙向通訊需求

在應用程式或驅動程式可以使用 bidi 通訊之前,它必須先實作雙向通訊介面IBidiSpl COM 介面或批注iSpl2 COM 介面,以及至少一個 IBidiRequest 和 IBidiRequestContainer COM 介面。 此外,下列其中一個或兩者都必須成立:

若要將單一要求傳送至印表機,應用程式或列印機驅動程序必須先撰寫要求,然後呼叫IBidiSpl::SendRecv 方法。 若要傳送多個要求,應用程式或驅動程式會撰寫要求清單,然後呼叫 IBidiSpl::MultiSendRecv 方法。

收到要求之後,spooler 的用戶端部分 (Winspool.drv) 會將它傳遞給伺服器端多任務緩衝處理程式 (spoolsv.exe) 。 伺服器端多任務緩衝處理程式可以位於本機電腦或遠端網路列印伺服器。 當伺服器端多任務緩衝處理程式收到要求時,它會剖析要求中的數據,並填入 BIDI_REQUEST_CONTAINER 結構的成員。

伺服器端後台處理程序接著會呼叫 SendRecvBidiDataSendRecvBidiDataFromPort。 當任一函式傳回時,其 ppResData 參數會指向記憶體位置,其中包含包含印表機回應之填入 BIDI_RESPONSE_CONTAINER 結構的位址。 伺服器端多任務緩衝處理程式會將此結構中的數據轉換成適合應用程式或驅動程式使用的表單,並將它傳回用戶端多任務緩衝處理程式,最後回到要求的源端。