다음을 통해 공유


양방향 통신 추가

스풀러는 애플리케이션 또는 드라이버와 프린터 간의 양방향("BiDi") 통신을 지원합니다. 이 지원을 사용하면 애플리케이션 또는 드라이버가 하나 이상의 요청을 프린터로 보내고 프린터가 이러한 요청에 응답할 수 있습니다.

양방향 지원 아키텍처를 보여 주는 다이어그램

양방향 통신 요구 사항

애플리케이션 또는 드라이버가 양방향 통신을 사용하려면 먼저 IBidiSpl COM 인터페이스 또는 IbidiSpl2 COM 인터페이스와 IBidiRequest 및 IBidiRequestContainer COM 인터페이스 중 하나 이상의 양방향 통신 인터페이스를 구현해야 합니다. 또한 다음 중 하나 또는 둘 다 true여야 합니다.

프린터에 단일 요청을 보내려면 애플리케이션 또는 프린터 드라이버가 먼저 요청을 작성한 다음 IBidiSpl::SendRecv 메서드를 호출해야 합니다. 여러 요청을 보내기 위해 애플리케이션 또는 드라이버는 요청 목록을 작성한 다음 IBidiSpl::MultiSendRecv 메서드를 호출합니다.

요청을 받은 후 스풀러(Winspool.drv)의 클라이언트 쪽 부분이 서버 쪽 스풀러(spoolsv.exe)에 전달합니다. 서버 쪽 스풀러는 로컬 컴퓨터 또는 원격 네트워크 인쇄 서버에 있을 수 있습니다. 서버 쪽 스풀러는 요청을 받으면 요청의 데이터를 구문 분석하고 BIDI_REQUEST_CONTAINER 구조체의 멤버를 채웁니다.

그런 다음 서버 쪽 스풀러는 SendRecvBidiData 또는 SendRecvBidiDataFromPort를 호출합니다. 두 함수가 반환되면 해당 ppResData 매개 변수는 프린터 응답을 포함하는 채워진 BIDI_RESPONSE_CONTAINER 구조체의 주소를 포함하는 메모리 위치를 가리킵니다. 서버 쪽 스풀러는 이 구조의 데이터를 애플리케이션 또는 드라이버에서 사용하기에 적합한 형식으로 변환하고 클라이언트 쪽 스풀러에 다시 전달한 다음, 마지막으로 요청의 발신자에게 다시 전달합니다.