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

O IPrintOemUni::Compression método pode ser usado com impressoras com suporte unidrv para fornecer um método de compactação de bitmap personalizado.

Sintaxe

HRESULT Compression(
        PDEVOBJ pdevobj,
        PBYTE   pInBuf,
        PBYTE   pOutBuf,
        DWORD   dwInLen,
        DWORD   dwOutLen,
  [out] OUT INT *piResult
);

Parâmetros

pdevobj

Ponteiro fornecido pelo chamador para uma estrutura DEVOBJ .

pInBuf

Ponteiro fornecido pelo chamador para dados de linha de verificação de entrada.

pOutBuf

Ponteiro fornecido pelo chamador para um buffer de saída para receber dados de linha de verificação compactados.

dwInLen

Comprimento fornecido pelo chamador dos dados de entrada.

dwOutLen

Comprimento fornecido pelo chamador do buffer de saída.

[out] piResult

Recebe um valor de resultado fornecido pelo método. Se a operação for bem-sucedida, esse valor deverá ser o número de bytes compactados, que não devem ser maiores do que o valor recebido para dwOutLen. Se ocorrer um erro ou se o método não puder compactar, o valor do resultado deverá ser -1.

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

O IPrintOemUni::Compression método é usado pela renderização de plug-ins para compactar os dados da linha de verificação antes de ser enviado para o spooler de impressão. A finalidade do método é fornecer suporte para métodos de compactação específicos da impressora que não têm suporte da Unidrv.

Se o IPrintOemUni::Compression método for definido e se o arquivo GPD da impressora contiver uma entrada de comando CmdEnableOEMComp, Unidrv chamará o método sempre que uma linha de verificação estiver pronta para ser enviada ao spooler de impressão. (Para obter informações sobre o comando CmdEnableOEMComp, consulte Comandos de compactação de dados raster.)

Os valores de parâmetro pInBuf e dwInLen descrevem um buffer que contém uma linha de verificação de dados de imagem a ser compactada. Os valores de parâmetro pOutBuf e dwOutLen descrevem o buffer no qual o IPrintOemUni::Compression método deve colocar os dados compactados.

Antes que o Unidrv envie uma linha de verificação para o spooler de impressão, ele tenta todos os métodos de compactação habilitados para determinar qual deles cria o menor fluxo de dados. Depois de determinar o melhor algoritmo de compactação (compactando os dados usando cada método), ele envia o comando de impressora que permite que a impressora aceite o melhor formato compactado e envia os dados compactados para a impressora.

Portanto, o IPrintOemUni::Compression método é chamado para cada linha de verificação, independentemente de os dados compactados retornados pelo método serem realmente usados ou não. Quando o método é chamado, dwOutLen contém o comprimento retornado pelo melhor método de compactação que Unidrv tentou até então. (Se nenhum outro método tiver sido testado, dwOutLen conterá o comprimento não compactado.) Se o algoritmo não puder produzir uma linha de verificação compactada igual ou menor que os bytes dwOutLen , ele deverá retornar -1 no local especificado por piResult.

Se, depois que Unidrv tentar todos os métodos de compactação habilitados, os dados compactados retornados por IPrintOemUni::Compression tiverem o menor comprimento, Unidrv enviará o buffer para o spooler de impressão, precedido pelo comando especificado pela entrada de comando CmdEnableOEMComp.

Se possível, o algoritmo de compactação do método deve usar o valor dwOutLen recebido para determinar se ele pode parar o algoritmo antes da conclusão, para economizar tempo se outro método de compactação já tiver criado um resultado melhor.

O IPrintOemUni::Compression 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 "Compactação" como entrada.

Requisitos

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