Partager via


StartDocPrinter, fonction

La fonction StartDocPrinter avertit le spouleur d’impression qu’un document doit être spooled pour l’impression.

Syntaxe

DWORD StartDocPrinter(
  _In_ HANDLE hPrinter,
  _In_ DWORD  Level,
  _In_ LPBYTE pDocInfo
);

Paramètres

hPrinter [in]

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

niveau [in]

Version de la structure vers laquelle pDocInfo pointe. Cette valeur doit être 1.

pDocInfo [in]

Pointeur vers une structure DOC_INFO_1 qui décrit le document à imprimer.

Valeur retournée

Si la fonction réussit, la valeur de retour identifie le travail d’impression.

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 classique 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.

Notez que l’appel de StartPagePrinter et endPagePrinter peut ne pas être nécessaire, par exemple si le type de données d’impression inclut les informations de page.

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 dépend de nombreux facteurs, notamment la quantité de mémoire virtuelle disponible, la quantité de mémoire allouée par les processus appelants et la quantité de fragmentation dans le tas de processus.

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
Winspool.drv
Noms Unicode et ANSI
StartDocPrinterW (Unicode) et StartDocPrinterA (ANSI)

Voir aussi

addJob

DOC_INFO_1

DOC_INFO_2

EndDocPrinter

EndPagePrinter

OpenPrinter

Impression

fonctions d’API Print Spooler

startPagePrinter

WritePrinter