Compartir a través de


Función WritePrinter

La función WritePrinter notifica al administrador de impresión que los datos se deben escribir en la impresora especificada.

Nota

WritePrinter solo admite la impresión GDI y no debe usarse para la impresión XPS. Si el trabajo de impresión usa la ruta de impresión XPS o OpenXPS, use XPS Print API. No se admite el envío de trabajos de impresión XPS o OpenXPS al administrador de colas mediante WritePrinter y puede dar lugar a resultados no predeterminados.

Sintaxis

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

Parámetros

hPrinter [in]

Identificador de la impresora. Use la función OpenPrinter o AddPrinter para recuperar un identificador de impresora.

pBuf [in]

Puntero a una matriz de bytes que contiene los datos que se deben escribir en la impresora.

cbBuf [in]

Tamaño, en bytes, de la matriz.

pcWritten [out]

Puntero a un valor que recibe el número de bytes de datos escritos en la impresora.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero.

Comentarios

Nota

Se trata de una función de bloqueo o sincrónica que podría no devolverse inmediatamente. La rapidez con la que devuelve esta función depende de factores en tiempo de ejecución, como el estado de red, la configuración del servidor de impresión y los factores de implementación del controlador de impresora que son difíciles de predecir al escribir una aplicación. Llamar a esta función desde un subproceso que administra la interacción con la interfaz de usuario podría hacer que la aplicación parezca que no responde.

La secuencia de un trabajo de impresión es la siguiente:

  1. Para iniciar un trabajo de impresión, llame a StartDocPrinter.
  2. Para comenzar cada página, llame a StartPagePrinter.
  3. Para escribir datos en una página, llame a WritePrinter.
  4. Para finalizar cada página, llame a EndPagePrinter.
  5. Repita 2, 3 y 4 para tantas páginas como sea necesario.
  6. Para finalizar el trabajo de impresión, llame a EndDocPrinter.

Cuando un documento de alto nivel (como un archivo Adobe PDF o Microsoft Word) u otros datos de impresora (como PCL, PS o HPGL) se envían directamente a una impresora, la configuración de impresión definida en el documento toma precedentes sobre la configuración de impresión de Windows. Documenta la salida cuando el valor del miembro pDatatype de la estructura de DOC_INFO_1 que se pasó en el parámetro pDocInfo de la llamada StartDocPrinter es "RAW" debe describir completamente la configuración del trabajo de impresión de estilo DEVMODE en el idioma comprendido por el hardware.

En versiones de Windows anteriores a Windows XP, cuando una página de un archivo en cola supera aproximadamente 350 MB, puede no imprimir y no enviar un mensaje de error. Por ejemplo, esto puede ocurrir al imprimir archivos EMF grandes. El límite de tamaño de página en versiones de Windows anteriores a Windows XP depende de muchos factores, incluida la cantidad de memoria virtual disponible, la cantidad de memoria asignada mediante la llamada a procesos y la cantidad de fragmentación en el montón del proceso. En Windows XP y versiones posteriores de Windows, los archivos EMF deben tener un tamaño de 2 GB o menos. Si WritePrinter se usa para escribir datos no EMF, como PDL listos para impresora, el tamaño del archivo solo está limitado por el espacio disponible en disco.

Ejemplos

Para ver un programa de ejemplo que usa esta función, consulte How To: Print Using the GDI Print API.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Winspool.h (incluye Windows.h)
Biblioteca
Winspool.lib
Archivo DLL
Spoolss.dll

Consulte también

Impresión

Funciones de la API del administrador de trabajos de impresión

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

StartPagePrinter

WritePrinter