共用方式為


新增雙向通訊

列印緩衝區支援應用程式或驅動程式與印表機之間的雙向 [BiDi] 通訊。 此支援可讓應用程式或驅動程式將一或多個要求傳送至印表機,以及印表機以回應這些要求。

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

雙向通訊需求

在應用程式或驅動程式可以使用 bidi 通訊之前,它必須實作 雙向通訊介面:要麼是 IBidiSpl COM 介面,要麼是 IbidiSpl2 COM 介面,並且實作至少一個 IBidiRequestIBidiRequestContainer COM 介面。 此外,下列其中一項或兩者都必須成立:

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

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

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