WritePrinter, fonction
La fonction WritePrinter avertit 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 [in]
-
Handle 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 sur 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.
Notes
Notes
Il s’agit d’une fonction bloquante ou synchrone qui 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’status réseau, la configuration du serveur d’impression et les facteurs d’implémentation du pilote 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 donner l’impression que l’application ne répond pas.
La séquence d’un travail d’impression est la suivante :
- 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 2, 3 et 4 pour autant de pages que nécessaire.
- Pour mettre fin au 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) sont envoyés directement à une imprimante, les paramètres d’impression définis dans le document sont supérieurs aux paramètres d’impression windows. La sortie des documents 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 dans un fichier mis en pool dépasse environ 350 Mo, l’impression 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 l’appel de 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 inférieure ou inférieure à 2 Go. Si WritePrinter est utilisé pour écrire des données non EMF, telles que pdl prêt 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
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 |
|