WritePrinter fonction)
La fonction WritePrinter informe le spouleur d’impression que les données doivent être écrites sur l’imprimante spécifiée.
Notes
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 [ dans]
-
Handle vers l’imprimante. Utilisez la fonction OpenPrinter ou AddPrinter pour récupérer un handle d’imprimante.
-
pBuf [ dans]
-
Pointeur vers un tableau d’octets qui contient les données qui doivent être écrites sur l’imprimante.
-
cbBuf [ dans]
-
Taille, en octets, du tableau.
-
pcWritten [ à]
-
Pointeur vers une valeur qui reçoit le nombre d’octets de données qui ont été écrits sur l’imprimante.
Valeur retournée
Si la fonction est réussie, 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
Notes
Il s’agit d’une fonction de blocage ou synchrone qui peut ne pas être renvoyée immédiatement. La vitesse à laquelle cette fonction est retournée dépend des facteurs d’exécution tels que l’état du réseau, la configuration du serveur d’impression et les facteurs d’implémentation des pilotes d’imprimante qui sont 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 faire que l’application semble ne pas répondre.
La séquence d’un travail d’impression se présente comme suit :
- Pour commencer un travail d’impression, appelez StartDocPrinter.
- Pour commencer chaque page, appelez StartPagePrinter.
- Pour écrire des données dans une page, appelez WritePrinter.
- Pour terminer chaque page, appelez EndPagePrinter.
- Répétez les étapes 2, 3 et 4 pour autant de pages que nécessaire.
- Pour mettre fin au travail d’impression, appelez EndDocPrinter.
lorsqu’un document de niveau supérieur (par exemple, un fichier Adobe PDF ou Microsoft Word) ou d’autres données d’imprimante (par exemple, PCL, PS ou HPGL) sont envoyés directement à une imprimante, les paramètres d’impression définis dans le document ont priorité sur les paramètres d’impression Windows. Les documents sont générés lorsque la valeur du membre pDatatype de la structure _ infos doc _ 1 qui a été transmise dans le paramètre PDOCINFO de l’appel StartDocPrinter est « RAW » doit décrire entièrement les paramètres du travail d’impression de style DEVMODEdans la langue comprise par le matériel.
dans les versions de Windows antérieures à Windows XP, quand une page dans un fichier mis en file d’attente dépasse environ 350 mo, elle peut échouer 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 par les processus appelant et la quantité de fragmentation dans le segment de mémoire de processus. dans Windows XP et les versions ultérieures de Windows, les fichiers EMF doivent avoir une taille inférieure ou égale à 2 go. Si WritePrinter est utilisé pour écrire des données non EMF, telles que le PDL prêt pour l’impression, 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 Comment : imprimer à l’aide de l’API d’impression GDI.
Configuration requise
| Condition requise | Valeur |
|---|---|
| Client minimal pris en charge |
Windows 2000 Professionnel - [Applications de bureau uniquement] |
| Serveur minimal pris en charge |
Windows 2000 Server - [Applications de bureau uniquement] |
| En-tête |
|
| Bibliothèque |
|
| DLL |
|