Compartir a través de


Método IPrintOemUni::Compression (prcomoem.h)

El IPrintOemUni::Compression método se puede usar con impresoras compatibles con Unidrv para proporcionar un método de compresión de mapa de bits personalizado.

Sintaxis

HRESULT Compression(
        PDEVOBJ pdevobj,
        PBYTE   pInBuf,
        PBYTE   pOutBuf,
        DWORD   dwInLen,
        DWORD   dwOutLen,
  [out] OUT INT *piResult
);

Parámetros

pdevobj

Puntero proporcionado por el autor de la llamada a una estructura DEVOBJ .

pInBuf

Puntero proporcionado por el autor de la llamada a los datos de la línea de análisis de entrada.

pOutBuf

Puntero proporcionado por el autor de la llamada a un búfer de salida para recibir datos de línea de examen comprimidos.

dwInLen

Longitud proporcionada por el autor de la llamada de los datos de entrada.

dwOutLen

Longitud proporcionada por el autor de la llamada del búfer de salida.

[out] piResult

Recibe un valor de resultado proporcionado por el método. Si la operación se realiza correctamente, este valor debe ser el número de bytes comprimidos, que no debe ser mayor que el valor recibido para dwOutLen. Si se produce un error o si el método no se puede comprimir, el valor del resultado debe ser -1.

Valor devuelto

El método debe devolver uno de los valores siguientes.

Código devuelto Descripción
S_OK
La operación se realizó correctamente.
E_FAIL
Error en la operación
E_NOTIMPL
El método no está implementado.

Comentarios

El IPrintOemUni::Compression método se usa mediante la representación de complementos para comprimir los datos de línea de examen antes de enviarlos al administrador de trabajos de impresión. El propósito del método es proporcionar compatibilidad con métodos de compresión específicos de la impresora que no son compatibles con Unidrv.

Si se define el IPrintOemUni::Compression método y si el archivo GPD de la impresora contiene una entrada de comando CmdEnableOEMComp, Unidrv llama al método cada vez que una línea de examen está lista para enviarse al administrador de trabajos de impresión. (Para obtener información sobre el comando CmdEnableOEMComp, vea Comandos de compresión de datos raster).

Los valores de parámetro pInBuf y dwInLen describen un búfer que contiene una línea de examen de los datos de imagen que se van a comprimir. Los valores de parámetro pOutBuf y dwOutLen describen el búfer en el que el IPrintOemUni::Compression método debe colocar los datos comprimidos.

Antes de que Unidrv envíe una línea de examen al administrador de trabajos de impresión, intenta cada método de compresión habilitado para determinar cuál crea el flujo de datos más pequeño. Después de determinar el mejor algoritmo de compresión (comprimiendo los datos mediante cada método), pone en cola el comando de impresora que permite a la impresora aceptar el mejor formato comprimido y, a continuación, envía los datos comprimidos a la impresora.

Por lo tanto, se llama al IPrintOemUni::Compression método para cada línea de examen, ya sea que los datos comprimidos devueltos por el método se usen o no. Cuando se llama al método , dwOutLen contiene la longitud devuelta por el mejor método de compresión Unidrv ha intentado hasta entonces. (Si no se ha probado ningún otro método, dwOutLen contiene la longitud sin comprimir). Si el algoritmo no puede generar una línea de examen comprimida que sea igual o menor que dwOutLen bytes, debe devolver -1 en la ubicación especificada por piResult.

Si, después de que Unidrv intente todos los métodos de compresión habilitados, los datos comprimidos devueltos por IPrintOemUni::Compression tienen la longitud más pequeña, Unidrv envía el búfer al administrador de trabajos de impresión, precedido por el comando especificado por la entrada de comando CmdEnableOEMComp.

Si es posible, el algoritmo de compresión del método debe usar el valor dwOutLen recibido para determinar si puede detener el algoritmo antes de la finalización, para ahorrar tiempo si otro método de compresión ya ha creado un mejor resultado.

El IPrintOemUni::Compression método es opcional. Si un complemento de representación implementa este método, el método IPrintOemUni::GetImplementedMethod del complemento debe devolver S_OK cuando recibe "Compression" como entrada.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado prcomoem.h (incluya Prcomoem.h)