API de filtro de datos del servidor de impresión de SNA

Usted configura la ruta de acceso a la DLL del filtro de datos de impresión. Todas las sesiones que usan activamente el servicio de impresión de host utilizan este archivo DLL. Sin embargo, el archivo DLL del filtro de datos de impresión puede especificar si quiere o no los datos de impresión de una sesión determinada que se le pasen.

Los puntos de entrada a este archivo DLL se enumeran de la siguiente manera:

PrtFilterAlloc
Obtiene un búfer de datos en el que se van a pasar datos de impresión.

PrtFilterFree
Indica que ya no se necesita un búfer de datos obtenido anteriormente de la DLL y que el archivo DLL puede liberar la memoria asignada para este recurso.

PrtFilterJobData
Permite que el archivo DLL manipule los datos de impresión.

PrtFilterJobEnd
Informa al DLL de que ha finalizado una tarea de impresión.

PrtFilterJobStart
Informa al archivo DLL de que se ha iniciado un nuevo trabajo de impresión y permite que el archivo DLL envíe datos especiales al servidor de impresión al inicio de un trabajo.

A continuación se muestra una descripción de la secuencia de ejemplo de llamadas durante un trabajo de impresión normal para ilustrar cómo se usan normalmente estas funciones:

  • Se llama a PrtFilterStartJob cuando se inicia un nuevo trabajo de impresión. El archivo DLL puede devolver un búfer de datos con datos especiales que se enviarán a la impresora (una página de banner especial o cadenas de inicialización de impresora especiales, por ejemplo) antes de imprimir datos.

  • Se llama a PrtFilterFree si se enviaron datos especiales en la función PrtFilterStartJob e indica que se puede liberar el búfer de datos usado para pasar datos especiales.

    La siguiente secuencia de llamadas de función se repite hasta que se hayan enviado todos los datos de impresión:

  • Se llama a PrtFilterAlloc para asignar un búfer de datos usado para pasar datos de impresión en la llamada posterior a PrtFilterJobData.

  • Se llama a PrtFilterJobData para pasar datos de impresión a la DLL para una posible modificación. Esto permite al usuario dll la oportunidad de manipular los datos de la impresora antes de enviarlos a la impresora. Si los datos de impresión modificados que se van a devolver requieren un búfer de datos mayor o el archivo DLL debe usar otro búfer de datos para devolver datos, es posible que la DLL tenga que asignar un nuevo búfer de datos para devolver estos datos. El archivo DLL también puede optar por liberar el búfer de datos usado para pasar los datos de impresión entrantes si se usa un búfer de datos diferente para devolver datos de impresión modificados. No se llamará a la función PrtFilterFree con el puntero al búfer de datos original si PrtFilterJobData devuelve otro búfer de datos.

  • Se llama a PrtFilterFree para indicar que se puede liberar el búfer de datos asignado por PrtFilterAlloc para pasar los datos entrantes a la función PrtFilterJobData. Si PrtFilterJobData devolvió un búfer de datos diferente, se llamaría a PrtFilterFree para indicar que se puede liberar un búfer de datos asignado por el archivo DLL que se usa para devolver datos de impresión modificados en la función PrtFilterJobData .

    La secuencia final se produce cuando se han procesado todos los datos de impresión:

  • Se llama a PrtFilterEndJob para indicar el final del trabajo de impresión y permite que el archivo DLL devuelva datos especiales (por ejemplo, una página de cierre) que deben ser enviados a la impresora.

  • Se llama a PrtFilterFree si se enviaron datos especiales en la función PrtFilterEndJob e indica que se puede liberar el búfer de datos usado para pasar datos especiales.