Método IPrintOemUni::MemoryUsage (prcomoem.h)
O método IPrintOemUni::MemoryUsage
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 de DEVOBJ.
pMemoryUsage
Ponteiro fornecido pelo chamador para uma estrutura de OEMMEMORYUSAGE.
Valor de retorno
O método deve retornar um dos valores a seguir.
Código de retorno | Descrição |
---|---|
|
A operação foi bem-sucedida. |
|
Falha na operação. |
|
O método não é implementado. |
Observações
A finalidade do método IPrintOemUni::MemoryUsage
é 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 método IPrintOemUni::MemoryUsage
é opcional.
O método IPrintOemUni::MemoryUsage
deve retornar dois valores, da seguinte maneira:
-
A quantidade de memória de tamanho fixo alocada permanentemente que o método IPrintOemUni::ImageProcessing precisa alocar.
Esse valor é retornado no membro dwFixedMemoryUsage da estrutura de OEMMEMORYUSAGE.
-
A quantidade de memória necessária para armazenar um bitmap após o método IPrintOemUni::ImageProcessing terminou de processá-lo.
O plug-in de renderização retorna esse bitmap processado para Unidrv ou o inicializa. A quantidade de memória necessária para armazenar o bitmap processado é retornada no dwPercentMemoryUsage membro da estrutura OEMMEMORYUSAGE e é expressa como uma porcentagem do tamanho do bitmap de origem.
O dwMaxBandSize membro da estrutura OEMMEMORYUSAGE é fornecido pela Unidrv e especifica o tamanho máximo da 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 banda, 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 IPrintOemUni::MemoryUsage
do plug-in de renderização, se existir, e usa o resultado para calcular a melhor maneira de dividir o espaço ideal de memória.
Por exemplo, suponha que o GDI relata que a quantidade ideal de memória a ser usada para desenho é de 6 megabytes (contido no membro dwMaxBandSize membro da estrutura OEMMEMORYUSAGE), enquanto a renderização O método IPrintOemUni::MemoryUsage
do plug-in retorna valores de zero para dwFixedMemoryUsage e 50 para dwPercentMemoryUsage. O valor de 50 significa que o IPrintOemUni::ImageProcessing bitmaps de saída do método será 50% menor que os bitmaps de origem. Portanto, o 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 método IPrintOemUni::MemoryUsage
não for fornecido, o 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 método IPrintOemUni::MemoryUsage
, o resultado é que mais memória será alocada para bitmaps do que o tamanho disponível ideal, potencialmente causando degradação de desempenho.
O método IPrintOemUni::MemoryUsage
é 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 |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | prcomoem.h (inclua Prcomoem.h) |