Přidání obousměrné komunikace

Zásobník tiskových úloh poskytuje podporu pro obousměrnou ("BiDi") komunikaci mezi aplikací nebo ovladačem a tiskárnou. Tato podpora umožňuje aplikaci nebo ovladač odeslat na tiskárnu jeden nebo více požadavků a tiskárna na tyto požadavky reagovat.

diagram znázorňující obousměrnou architekturu podpory

Požadavky na obousměrnou komunikaci

Než může aplikace nebo ovladač použít komunikaci bidi, musí implementovat obousměrná komunikační rozhraní: buď IBidiSpl COM rozhraní, nebo IbidiSpl2 COM rozhraní, spolu s alespoň jedním z IBidiRequest a IBidiRequestContainer COM rozhraní. Kromě toho musí být splněna jedna nebo obě následující podmínky:

  • Funkce SendRecvBidiData je implementována v knihovně DLL zprostředkovatele tisku.

  • Funkce SendRecvBidiDataFromPort je implementována v knihovně DLL serveru monitorování jazyka nebo v knihovně DLL serveru pro monitorování portů.

Chcete-li odeslat jeden požadavek na tiskárnu, musí aplikace nebo ovladač tiskárny nejprve vytvořit požadavek a potom zavolat metodu IBidiSpl::SendRecv. Chcete-li odeslat více požadavků, aplikace nebo ovladač vytvoří seznam požadavků a potom volá IBidiSpl::MultiSendRecv metoda.

Po přijetí požadavku klientská část zařazovacího programu (Winspool.drv) předá požadavek do serverové části zařazovacího programu (spoolsv.exe). Serverový zařazovač může být na místním počítači nebo na vzdáleném síťovém tiskovém serveru. Když serverový vícestupňový procesor obdrží požadavek, analyzuje data v požadavku a vyplní členy struktury BIDI_REQUEST_CONTAINER.

Spooler na serverové straně pak volá SendRecvBidiData nebo SendRecvBidiDataFromPort. Když vrátí některou z funkcí, její parametr ppResData odkazuje na umístění paměti, které obsahuje adresu vyplněné BIDI_RESPONSE_CONTAINER struktury, která obsahuje odpověď tiskárny. Zařazování na straně serveru převede data v této struktuře do podoby vhodné pro použití aplikací nebo ovladačem a předá je zpět zařazování na straně klienta, a nakonec zpět původci požadavku.