Agregar comunicación bidireccional
El administrador de colas proporciona compatibilidad con la comunicación bidireccional ("BiDi") entre una aplicación o controlador y una impresora. Esta compatibilidad permite que la aplicación o el controlador envíen una o varias solicitudes a la impresora, y la impresora responda a estas solicitudes.
Requisitos de comunicación bidireccional
Antes de que una aplicación o controlador pueda usar la comunicación bidi, debe implementar interfaces de comunicación bidireccionales: la interfaz COM IBidiSpl o la interfaz COM de IbiSpl2 , junto con al menos una de las interfaces COM IBidiRequest e IBidiRequestContainer . Además, uno o ambos de los siguientes deben ser true:
La función SendRecvBidiData se implementa en un archivo DLL del proveedor de impresión.
La función SendRecvBidiDataFromPort se implementa en un archivo DLL del servidor de supervisión de lenguaje o en un archivo DLL del servidor de supervisión de puertos.
Para enviar una única solicitud a la impresora, una aplicación o controlador de impresora debe redactar primero la solicitud y, a continuación, llamar al método IBidiSpl::SendRecv. Para enviar varias solicitudes, la aplicación o el controlador componen una lista de solicitudes y, a continuación, llama al método IBidiSpl::MultiSendRecv .
Después de recibir la solicitud, la parte del lado cliente del administrador de colas (Winspool.drv) la pasa al administrador de colas del lado servidor (spoolsv.exe). El administrador de trabajos en cola del lado servidor puede estar en el equipo local o en un servidor de impresión de red remota. Cuando el administrador de trabajos de cola del lado servidor recibe la solicitud, analiza los datos de la solicitud y rellena los miembros de una estructura de BIDI_REQUEST_CONTAINER .
A continuación, el administrador de colas del lado servidor llama a SendRecvBidiData o SendRecvBidiDataFromPort. Cuando se devuelve cualquiera de las funciones, su parámetro ppResData apunta a una ubicación de memoria que contiene la dirección de una estructura de BIDI_RESPONSE_CONTAINER rellenada que contiene la respuesta de la impresora. El administrador de trabajos de cola del lado servidor convierte los datos de esta estructura en un formulario adecuado para su uso por parte de la aplicación o controlador, y lo pasa de nuevo al administrador de colas del lado cliente y, por último, al originador de la solicitud.