StartDocPrinter-Funktion

Die StartDocPrinter-Funktion benachrichtigt den Druckspooler, dass ein Dokument zum Drucken gespoolt werden soll.

Syntax

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

Parameter

hPrinter [ In]

Ein Handle für den Drucker. Verwenden Sie die OpenPrinter- oder AddPrinter-Funktion, um ein Druckerhandle abzurufen.

Ebene [ In]

Die Version der -Struktur, auf die pDocInfo verweist. Dieser Wert muss 1 sein.

pDocInfo [ In]

Ein Zeiger auf eine DOC _ INFO _ 1-Struktur, die das zu druckende Dokument beschreibt.

Rückgabewert

Wenn die Funktion erfolgreich ausgeführt wird, identifiziert der Rückgabewert den Druckauftrag.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.

Bemerkungen

Hinweis

Dies ist eine blockierende oder synchrone Funktion und wird möglicherweise nicht sofort zurückgegeben. Wie schnell diese Funktion zurückgegeben wird, hängt von Laufzeitfaktoren wie Netzwerkstatus, Druckerserverkonfiguration und Implementierungsfaktoren für Druckertreiber ab, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Das Aufrufen dieser Funktion über einen Thread, der die Interaktion mit der Benutzeroberfläche verwaltet, kann dazu bringen, dass die Anwendung scheinbar nicht reagiert.

Die typische Sequenz für einen Druckauftrag sieht wie folgt aus:

  1. Um einen Druckauftrag zu starten, rufen Sie StartDocPrinter auf.
  2. Um jede Seite zu starten, rufen Sie StartPagePrinterauf.
  3. Um Daten auf eine Seite zu schreiben, rufen Sie WritePrinterauf.
  4. Um jede Seite zu beenden, rufen Sie EndPagePrinterauf.
  5. Wiederholen Sie 2, 3 und 4 für so viele Seiten wie nötig.
  6. Um den Druckauftrag zu beenden, rufen Sie EndDocPrinter auf.

Beachten Sie, dass der Aufruf von StartPagePrinter und EndPagePrinter möglicherweise nicht erforderlich ist, z. B. wenn der Datentyp print die Seiteninformationen enthält.

Wenn eine Seite in einer datei mit Spooling ca. 350 MB überschreitet, kann sie nicht gedruckt werden und keine Fehlermeldung senden. Dies kann beispielsweise beim Drucken großer EMF-Dateien auftreten. Die Begrenzung der Seitengröße hängt von vielen Faktoren ab, einschließlich der Menge des verfügbaren virtuellen Arbeitsspeichers, der Durch aufrufenden Prozesse belegten Arbeitsspeichers und der Fragmentierung im Prozessheap.

Beispiele

Ein Beispielprogramm, das diese Funktion verwendet, finden Sie unter Vorgehensweise: Drucken mithilfe der GDI-Druck-API.

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Winspool.h (include Windows.h)
Bibliothek
Winspool.lib
DLL
Winspool.drv
Unicode- und ANSI-Name
StartDocPrinterW (Unicode) und StartDocPrinterA (ANSI)

Weitere Informationen

Addjob

DOC _ INFO _ 1

DOC _ INFO _ 2

EndDocPrinter

EndPagePrinter

OpenPrinter

Drucken

Druckspooler-API-Funktionen

StartDocPrinter

StartPagePrinter

WritePrinter