Compartir a través de


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

El método IPrintOemUni::MemoryUsage se puede usar con impresoras compatibles con Unidrv para especificar la cantidad de memoria necesaria para su uso por parte de un complemento de representación IPrintOemUni::ImageProcessing método.

Sintaxis

HRESULT MemoryUsage(
  PDEVOBJ         pdevobj,
  POEMMEMORYUSAGE pMemoryUsage
);

Parámetros

pdevobj

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

pMemoryUsage

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

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 se implementa.

Observaciones

El objetivo del método IPrintOemUni::MemoryUsage es ayudar al controlador Unidrv a determinar el tamaño óptimo de la superficie de dibujo GDI, en función de los requisitos de memoria del método IPrintOemUni::ImageProcessing. La implementación del método IPrintOemUni::MemoryUsage es opcional.

El método IPrintOemUni::MemoryUsage debe devolver dos valores, como se indica a continuación:

  • Cantidad de memoria asignada permanentemente y de tamaño fijo que el método IPrintOemUni::ImageProcessing debe asignar.

    Este valor se devuelve en el miembro dwFixedMemoryUsage de de la estructura OEMMEMORYUSAGE de.

  • Cantidad de memoria necesaria para contener un mapa de bits después de que el método IPrintOemUni::ImageProcessing haya terminado de procesarlo.

    El complemento de representación devuelve este mapa de bits procesado a Unidrv o lo agrupa. La cantidad de memoria necesaria para almacenar el mapa de bits procesado se devuelve en el dwPercentMemoryUsage miembro de la estructura OEMMEMORYUSAGE y se expresa como un porcentaje del tamaño del mapa de bits de origen.

El valor devuelto en el miembro dwPercentMemoryUsage debe incluir, además del tamaño del mapa de bits procesado, la cantidad de asignaciones de memoria adicionales que dependen del tamaño del mapa de bits de origen.

Unidrv proporciona el miembro dwMaxBandSize de la estructura OEMMEMORYUSAGE y especifica el tamaño máximo de banda predeterminado.

Antes de que el controlador Unidrv cree una superficie de dibujo, solicita A GDI que determine el tamaño óptimo para los mapas de bits de bandas de imágenes, en función de la memoria del sistema disponible. Este espacio de memoria óptimo debe compartirse, para cada mapa de bits de bandas, entre un mapa de bits de origen que se pasa a la IPrintOemUni::ImageProcessing método y un mapa de bits procesado (normalmente más pequeño) que el método devuelve o genera. Unidrv llama al método IPrintOemUni::MemoryUsage del complemento de representación, si existe, y usa el resultado para calcular la mejor manera de dividir el espacio de memoria óptimo.

Por ejemplo, supongamos que la cantidad óptima de memoria que se va a usar para dibujar es de 6 megabytes (contenida en el miembro dwMaxBandSize de la estructura OEMMEMORYUSAGE), mientras que el método IPrintOemUni::MemoryUsage del complemento de representación devuelve valores de cero para dwFixedMemoryUsage y 50 para dwPercentMemoryUsage. El valor de 50 significa que el IPrintOemUni::ImageProcessing los mapas de bits de salida del método serán 50 % más pequeños que los mapas de bits de origen. Por lo tanto, Unidrv asignará un tamaño de mapa de bits de origen de 4 megabytes, lo que hará que los mapas de bits de salida sean de 2 megabytes.

Si no se proporciona un método IPrintOemUni::MemoryUsage, Unidrv asigna todo el espacio disponible óptimo al mapa de bits de origen. Esto es aceptable si el método IPrintOemUni::ImageProcessing devuelve el mapa de bits procesado en el espacio de memoria asignado para el mapa de bits de origen. Sin embargo, si un complemento de representación IPrintOemUni::ImageProcessing método asigna espacio para un mapa de bits de destino, pero no proporciona un método IPrintOemUni::MemoryUsage, el resultado es que se asignará más memoria para mapas de bits que el tamaño óptimo disponible, lo que podría provocar una degradación del rendimiento.

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

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de prcomoem.h (include Prcomoem.h)

Consulte también

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE