Udostępnij przez


Dodawanie komunikacji dwukierunkowej

Bufor zapewnia obsługę dwukierunkowej ("BiDi") komunikacji między aplikacją lub sterownikiem a drukarką. Ta obsługa umożliwia aplikacji lub sterownikowi wysyłanie co najmniej jednego żądania do drukarki, a drukarka odpowiada na te żądania.

diagram przedstawiający architekturę obsługi dwukierunkowej.

Wymagania dotyczące komunikacji dwukierunkowej

Aby aplikacja lub sterownik mógł korzystać z komunikacji bidi, musi zaimplementować interfejsy komunikacji dwukierunkowej : albo interfejs IBidiSpl COM lub interfejs IbidiSpl2 COM, wraz z co najmniej jednym z interfejsów IBidiRequest i IBidiRequestContainer COM. Ponadto jeden lub oba z następujących warunków muszą być spełnione:

  • Funkcja SendRecvBidiData jest implementowana w bibliotece DLL dostawcy wydruku.

  • Funkcja SendRecvBidiDataFromPort jest implementowana w bibliotece DLL serwera monitora języka lub w bibliotece DLL serwera monitora portów.

Aby wysłać jedno żądanie do drukarki, aplikacja lub sterownik drukarki musi najpierw utworzyć żądanie, a następnie wywołać metodę IBidiSpl::SendRecv. Aby wysłać wiele żądań, aplikacja lub sterownik komponuje listę żądań, a następnie wywołuje metodę IBidiSpl::MultiSendRecv.

Po otrzymaniu żądania część buforu po stronie klienta (Winspool.drv) przekazuje go do buforu po stronie serwera (spoolsv.exe). Bufor po stronie serwera może znajdować się na komputerze lokalnym lub na zdalnym serwerze wydruku sieci. Gdy bufor po stronie serwera odbiera żądanie, analizuje dane w żądaniu i wypełnia składowe struktury BIDI_REQUEST_CONTAINER.

Bufor po stronie serwera wywołuje SendRecvBidiData lub SendRecvBidiDataFromPort. Gdy którakolwiek z funkcji zostanie zwrócona, jego ppResData parametr wskazuje lokalizację pamięci zawierającą adres wypełnionej struktury BIDI_RESPONSE_CONTAINER zawierającej odpowiedź drukarki. Bufor po stronie serwera konwertuje dane w tej strukturze na formularz odpowiedni do użycia przez aplikację lub sterownik i przekazuje je z powrotem do buforu po stronie klienta, a na koniec do inicjatora żądania.