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

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

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 OEMMEMORYUSAGE .

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::MemoryUsage propósito del método es ayudar al controlador Unidrv a determinar el tamaño óptimo para la superficie de dibujo GDI, en función de los requisitos de memoria del método IPrintOemUni::ImageProcessing . La implementación del IPrintOemUni::MemoryUsage método es opcional.

El IPrintOemUni::MemoryUsage método 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 necesita asignar.

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

  • 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 miembro dwPercentMemoryUsage 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.

El miembro dwMaxBandSize de la estructura OEMMEMORYUSAGE lo proporciona Unidrv y especifica el tamaño de banda máximo 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 al método IPrintOemUni::ImageProcessing y un mapa de bits procesado (normalmente más pequeño) que el método devuelve o genera. Unidrv llama al método del complemento de IPrintOemUni::MemoryUsage 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 del IPrintOemUni::MemoryUsage complemento de representación devuelve valores de cero para dwFixedMemoryUsage y 50 para dwPercentMemoryUsage. El valor de 50 significa que los mapas de bits de salida del método IPrintOemUni::ImageProcessing serán 50 por ciento 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 IPrintOemUni::MemoryUsage método, 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 el método IPrintOemUni::ImageProcessing de un complemento de representación asigna espacio para un mapa de bits de destino, pero no proporciona un IPrintOemUni::MemoryUsage método, el resultado es que se asignará más memoria para mapas de bits que el tamaño disponible óptimo, lo que podría provocar una degradación del rendimiento.

El IPrintOemUni::MemoryUsage 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 "MemoryUsage" como entrada.

Requisitos

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

Consulte también

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE