Partager via


WritePrinter, fonction

La fonction WritePrinter informe le spouleur d’impression que les données doivent être écrites dans l’imprimante spécifiée.

Remarque

WritePrinter prend uniquement en charge l’impression GDI et ne doit pas être utilisé pour l’impression XPS. Si votre travail d’impression utilise le chemin d’impression XPS ou OpenXPS, utilisez l’API d’impression XPS. L’envoi de travaux d’impression XPS ou OpenXPS au spouleur à l’aide de WritePrinter n’est pas pris en charge et peut entraîner des résultats indéterminés.

Syntaxe

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

Paramètres

hPrinter [in]

Poignée de l’imprimante. Utilisez la fonction OpenPrinter ou AddPrinter pour récupérer un handle d’imprimante.

pBuf [in]

Pointeur vers un tableau d’octets qui contient les données qui doivent être écrites dans l’imprimante.

cbBuf [in]

Taille, en octets, du tableau.

pcWritten [out]

Pointeur vers une valeur qui reçoit le nombre d’octets de données écrites dans l’imprimante.

Valeur retournée

Si la fonction réussit, la valeur de retour est une valeur différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro.

Remarques

Remarque

Il s’agit d’une fonction bloquante ou synchrone et peut ne pas être retournée immédiatement. La rapidité avec laquelle cette fonction retourne dépend de facteurs d’exécution tels que l’état réseau, la configuration du serveur d’impression et les facteurs d’implémentation du pilote d’imprimante difficiles à prédire lors de l’écriture d’une application. L’appel de cette fonction à partir d’un thread qui gère l’interaction avec l’interface utilisateur peut rendre l’application sans réponse.

La séquence d’un travail d’impression est la suivante :

  1. Pour commencer un travail d’impression, appelez StartDocPrinter.
  2. Pour commencer chaque page, appelez StartPagePrinter.
  3. Pour écrire des données dans une page, appelez WritePrinter.
  4. Pour terminer chaque page, appelez EndPagePrinter.
  5. Répétez 2, 3 et 4 pour autant de pages que nécessaire.
  6. Pour terminer le travail d’impression, appelez EndDocPrinter.

Lorsqu’un document de haut niveau (tel qu’un fichier Adobe PDF ou Microsoft Word) ou d’autres données d’imprimante (telles que PCL, PS ou HPGL) est envoyé directement à une imprimante, les paramètres d’impression définis dans le document prennent un précédent sur les paramètres d’impression Windows. Les documents sont générés lorsque la valeur du membre pDatatype de la structure DOC_INFO_1 qui a été passée dans le paramètre pDocInfo de l’appel StartDocPrinter est « RAW » doit décrire entièrement les paramètres de travail d’impression de style DEVMODE dans la langue comprise par le matériel.

Dans les versions de Windows antérieures à Windows XP, lorsqu’une page d’un fichier spooled dépasse environ 350 Mo, elle peut échouer à imprimer et ne pas envoyer de message d’erreur. Par exemple, cela peut se produire lors de l’impression de fichiers EMF volumineux. La limite de taille de page dans les versions de Windows antérieures à Windows XP dépend de nombreux facteurs, notamment la quantité de mémoire virtuelle disponible, la quantité de mémoire allouée en appelant des processus et la quantité de fragmentation dans le tas de processus. Dans Windows XP et les versions ultérieures de Windows, les fichiers EMF doivent avoir une taille de 2 Go ou moins. Si WritePrinter est utilisé pour écrire des données non EMF, telles que pdl prêts pour l’imprimante, la taille du fichier est limitée uniquement par l’espace disque disponible.

Exemples

Pour obtenir un exemple de programme qui utilise cette fonction, consultez Guide pratique pour imprimer à l’aide de l’API d’impression GDI.

Spécifications

Besoin Valeur
Client minimum pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimum pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête de page
Winspool.h (inclure Windows.h)
Bibliothèque
Winspool.lib
DLL
Spoolss.dll

Voir aussi

Impression

fonctions d’API Print Spooler

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

startPagePrinter