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

O IPrintOemUni::MemoryUsage método pode ser usado com impressoras com suporte unidrv para especificar a quantidade de memória necessária para uso pelo método IPrintOemUni::ImageProcessing de um plug-in de renderização.

Sintaxe

HRESULT MemoryUsage(
  PDEVOBJ         pdevobj,
  POEMMEMORYUSAGE pMemoryUsage
);

Parâmetros

pdevobj

Ponteiro fornecido pelo chamador para uma estrutura DEVOBJ .

pMemoryUsage

Ponteiro fornecido pelo chamador para uma estrutura OEMMEMORYUSAGE .

Retornar valor

O método deve retornar um dos valores a seguir.

Código de retorno Descrição
S_OK
A operação foi realizada com êxito.
E_FAIL
Falha na operação.
E_NOTIMPL
O método não está implementado.

Comentários

A IPrintOemUni::MemoryUsage finalidade do método é ajudar o driver Unidrv a determinar o tamanho ideal para a superfície de desenho GDI, com base nos requisitos de memória do método IPrintOemUni::ImageProcessing . A implementação do IPrintOemUni::MemoryUsage método é opcional.

O IPrintOemUni::MemoryUsage método deve retornar dois valores, da seguinte maneira:

  • A quantidade de memória fixa alocada permanentemente que o método IPrintOemUni::ImageProcessing precisa alocar.

    Esse valor é retornado no membro dwFixedMemoryUsage da estrutura OEMMEMORYUSAGE .

  • A quantidade de memória necessária para manter um bitmap após o método IPrintOemUni::ImageProcessing terminar de processá-lo.

    O plug-in de renderização retorna esse bitmap processado para Unidrv ou o spools. A quantidade de memória necessária para armazenar o bitmap processado é retornada no membro dwPercentMemoryUsage da estrutura OEMMEMORYUSAGE e é expressa como uma porcentagem do tamanho do bitmap de origem.

O valor retornado no membro dwPercentMemoryUsage deve incluir, além do tamanho do bitmap processado, a quantidade de alocações de memória adicionais que dependem do tamanho do bitmap de origem.

O membro dwMaxBandSize da estrutura OEMMEMORYUSAGE é fornecido pelo Unidrv e especifica o tamanho máximo de banda padrão.

Antes que o driver Unidrv crie uma superfície de desenho, ele solicita gdi para determinar o tamanho ideal para bitmaps de faixa de imagem, com base na memória do sistema disponível. Esse espaço de memória ideal deve ser compartilhado, para cada bitmap de faixa, entre um bitmap de origem que é passado para o método IPrintOemUni::ImageProcessing e um bitmap processado (normalmente menor) que o método retorna ou produz. O Unidrv chama o método do IPrintOemUni::MemoryUsage plug-in de renderização, se ele existir, e usa o resultado para calcular a melhor maneira de dividir o espaço de memória ideal.

Por exemplo, suponha que a GDI relata que a quantidade ideal de memória a ser usada para desenho é de 6 megabytes (contidos no membro dwMaxBandSize da estrutura OEMMEMORYUSAGE), enquanto o método do plug-in de IPrintOemUni::MemoryUsage renderização retorna valores de zero para dwFixedMemoryUsage e 50 para dwPercentMemoryUsage. O valor de 50 significa que os bitmaps de saída do método IPrintOemUni::ImageProcessing serão 50% menores que os bitmaps de origem. Portanto, Unidrv alocará um tamanho de bitmap de origem de 4 megabytes, fazendo com que os bitmaps de saída sejam de 2 megabytes.

Se um IPrintOemUni::MemoryUsage método não for fornecido, Unidrv alocará todo o espaço disponível ideal para o bitmap de origem. Isso será aceitável se o método IPrintOemUni::ImageProcessing retornar o bitmap processado no espaço de memória alocado para o bitmap de origem. No entanto, se o método IPrintOemUni::ImageProcessing de um plug-in de renderização aloca espaço para um bitmap de destino, mas não fornece um IPrintOemUni::MemoryUsage método, o resultado é que mais memória será alocada para bitmaps do que o tamanho disponível ideal, potencialmente causando degradação do desempenho.

O IPrintOemUni::MemoryUsage método é opcional. Se um plug-in de renderização implementar esse método, o método IPrintOemUni::GetImplementedMethod do plug-in deverá retornar S_OK quando receber "MemoryUsage" como entrada.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho prcomoem.h (inclua Prcomoem.h)

Confira também

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE