Compartilhar via


Função WritePrinter

A função WritePrinter notifica o spooler de impressão de que os dados devem ser gravados na impressora especificada.

Observação

WritePrinter só dá suporte à impressão GDI e não deve ser usado para impressão XPS. Se o trabalho de impressão usar o XPS ou o caminho de impressão OpenXPS, use a API de Impressão XPS. Não há suporte para o envio de trabalhos de impressão XPS ou OpenXPS para o spooler usando WritePrinter e pode resultar em resultados indeterminados.

Sintaxe

BOOL WritePrinter(
  _In_  HANDLE  hPrinter,
  _In_  LPVOID  pBuf,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcWritten
);

Parâmetros

hPrinter [in]

Um identificador para a impressora. Use a função OpenPrinter ou AddPrinter para recuperar um identificador de impressora.

pBuf [in]

Um ponteiro para uma matriz de bytes que contém os dados que devem ser gravados na impressora.

cbBuf [in]

O tamanho, em bytes, da matriz.

pcWritten [out]

Um ponteiro para um valor que recebe o número de bytes de dados que foram gravados na impressora.

Valor retornado

Se a função for bem-sucedida, o valor retornado será um valor diferente de zero.

Se a função falhar, o valor retornado será zero.

Comentários

Observação

Essa é uma função de bloqueio ou síncrona e pode não retornar imediatamente. A rapidez com que essa função retorna depende de fatores de tempo de execução, como status de rede, configuração do servidor de impressão e fatores de implementação do driver de impressora que são difíceis de prever ao gravar um aplicativo. Chamar essa função de um thread que gerencia a interação com a interface do usuário pode fazer com que o aplicativo pareça não responder.

A sequência de um trabalho de impressão é a seguinte:

  1. Para iniciar um trabalho de impressão, chame StartDocPrinter.
  2. Para iniciar cada página, chame StartPagePrinter.
  3. Para gravar dados em uma página, chame WritePrinter.
  4. Para encerrar cada página, chame EndPagePrinter.
  5. Repita 2, 3 e 4 para quantas páginas forem necessárias.
  6. Para encerrar o trabalho de impressão, chame EndDocPrinter.

Quando um documento de alto nível (como um arquivo Adobe PDF ou Microsoft Word) ou outros dados de impressora (como PCL, PS ou HPGL) é enviado diretamente para uma impressora, as configurações de impressão definidas no documento têm precedentes sobre as configurações de impressão do Windows. Saída de documentos quando o valor do membro pDatatype da estrutura DOC_INFO_1 que foi passado no parâmetro pDocInfo da chamada StartDocPrinter é "RAW" deve descrever totalmente as configurações de trabalho de impressão no estilo DEVMODE no idioma compreendido pelo hardware.

Em versões do Windows anteriores ao Windows XP, quando uma página em um arquivo com spool excede aproximadamente 350 MB, ela pode falhar ao imprimir e não enviar uma mensagem de erro. Por exemplo, isso pode ocorrer ao imprimir arquivos EMF grandes. O limite de tamanho de página em versões do Windows anteriores ao Windows XP depende de muitos fatores, incluindo a quantidade de memória virtual disponível, a quantidade de memória alocada por processos de chamada e a quantidade de fragmentação no heap de processo. No Windows XP e versões posteriores do Windows, os arquivos EMF devem ter 2 GB ou menos de tamanho. Se WritePrinter for usado para gravar dados não EMF, como PDL pronto para impressora, o tamanho do arquivo será limitado apenas pelo espaço em disco disponível.

Exemplos

Para obter um programa de exemplo que usa essa função, consulte How To: Print Using the GDI Print API( Como imprimir usando a API de impressão GDI).

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Winspool.h (inclua Windows.h)
Biblioteca
Winspool.lib
DLL
Spoolss.dll

Confira também

Impressão

Funções da API do Spooler de impressão

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

StartPagePrinter

WritePrinter