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 |
---|---|
|
A operação foi realizada com êxito. |
|
Falha na operação. |
|
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 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) |