Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A função WritePrinter notifica o spooler de impressão de que os dados devem ser gravados na impressora especificada.
Observação
WritePrinter suporta apenas impressão GDI e não deve ser usado para impressão XPS. Se o seu trabalho de impressão usa o caminho de impressão XPS ou OpenXPS, use a API de impressão XPS. O envio de trabalhos de impressão XPS ou OpenXPS para o spooler usando WritePrinter não é suportado e pode resultar em resultados indeterminados.
Sintaxe
BOOL WritePrinter(
_In_ HANDLE hPrinter,
_In_ LPVOID pBuf,
_In_ DWORD cbBuf,
_Out_ LPDWORD pcWritten
);
Parâmetros
-
hPrinter [em]
-
Uma alça para a impressora. Use a função OpenPrinter ou AddPrinter para recuperar uma alça de impressora.
-
pBuf [em]
-
Um ponteiro para uma matriz de bytes que contém os dados que devem ser gravados na impressora.
-
cbBuf [em]
-
O tamanho, em bytes, da matriz.
-
pcEscrito [out]
-
Um ponteiro para um valor que recebe o número de bytes de dados que foram gravados na impressora.
Valor de retorno
Se a função for bem-sucedida, o valor de retorno será um valor diferente de zero.
Se a função falhar, o valor de retorno será zero.
Observações
Observação
Esta é 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 da 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 escrever um aplicativo. Chamar essa função a partir de um thread que gerencia a interação com a interface do usuário pode fazer com que o aplicativo pareça não estar respondendo.
A sequência para um trabalho de impressão é a seguinte:
- Para iniciar um trabalho de impressão, chame StartDocPrinter.
- Para começar cada página, chame StartPagePrinter.
- Para gravar dados em uma página, chame WritePrinter.
- Para encerrar cada página, chame EndPagePrinter.
- Repita 2, 3 e 4 por quantas páginas forem necessárias.
- Para terminar 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 da impressora (como PCL, PS ou HPGL) são enviados diretamente para uma impressora, as configurações de impressão definidas no documento prevalecem sobre as configurações de impressão do Windows. A saída de documentos quando o valor do membro pDatatype da estrutura DOC_INFO_1 que foi passada no parâmetro pDocInfo da chamada StartDocPrinter é "RAW" deve descrever completamente as configurações do 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 spooled excede aproximadamente 350 MB, ele 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 do 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 Como imprimir usando a API de impressão GDI.
Requerimentos
| Requisito | Valor |
|---|---|
| Cliente mínimo suportado |
Windows 2000 Professional [apenas aplicações de ambiente de trabalho] |
| Servidor mínimo suportado |
Windows 2000 Server [apenas aplicações de ambiente de trabalho] |
| Cabeçalho |
|
| Biblioteca |
|
| DLL |
|