양방향 통신 추가
스풀러는 애플리케이션 또는 드라이버와 프린터 간의 양방향("BiDi") 통신을 지원합니다. 이 지원을 사용하면 애플리케이션 또는 드라이버가 하나 이상의 요청을 프린터로 보내고 프린터가 이러한 요청에 응답할 수 있습니다.
양방향 통신 요구 사항
애플리케이션 또는 드라이버가 양방향 통신을 사용하려면 먼저 IBidiSpl COM 인터페이스 또는 IbidiSpl2 COM 인터페이스와 IBidiRequest 및 IBidiRequestContainer COM 인터페이스 중 하나 이상의 양방향 통신 인터페이스를 구현해야 합니다. 또한 다음 중 하나 또는 둘 다 true여야 합니다.
SendRecvBidiData 함수는 인쇄 공급자 DLL에서 구현됩니다.
SendRecvBidiDataFromPort 함수는 언어 모니터 서버 DLL 또는 포트 모니터 서버 DLL에서 구현됩니다.
프린터에 단일 요청을 보내려면 애플리케이션 또는 프린터 드라이버가 먼저 요청을 작성한 다음 IBidiSpl::SendRecv 메서드를 호출해야 합니다. 여러 요청을 보내기 위해 애플리케이션 또는 드라이버는 요청 목록을 작성한 다음 IBidiSpl::MultiSendRecv 메서드를 호출합니다.
요청을 받은 후 스풀러(Winspool.drv)의 클라이언트 쪽 부분이 서버 쪽 스풀러(spoolsv.exe)에 전달합니다. 서버 쪽 스풀러는 로컬 컴퓨터 또는 원격 네트워크 인쇄 서버에 있을 수 있습니다. 서버 쪽 스풀러는 요청을 받으면 요청의 데이터를 구문 분석하고 BIDI_REQUEST_CONTAINER 구조체의 멤버를 채웁니다.
그런 다음 서버 쪽 스풀러는 SendRecvBidiData 또는 SendRecvBidiDataFromPort를 호출합니다. 두 함수가 반환되면 해당 ppResData 매개 변수는 프린터 응답을 포함하는 채워진 BIDI_RESPONSE_CONTAINER 구조체의 주소를 포함하는 메모리 위치를 가리킵니다. 서버 쪽 스풀러는 이 구조의 데이터를 애플리케이션 또는 드라이버에서 사용하기에 적합한 형식으로 변환하고 클라이언트 쪽 스풀러에 다시 전달한 다음, 마지막으로 요청의 발신자에게 다시 전달합니다.