Freigeben über


StartDocPrinter-Funktion

Die StartDocPrinter-Funktion benachrichtigt den Druckspooler darüber, dass ein Dokument zum Drucken in der Spule eingespoolt 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 einen 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 ist, 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ückgibt, hängt von Laufzeitfaktoren wie Netzwerk-status, Druckserverkonfiguration und Druckertreiberimplementierungsfaktoren ab, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Wenn Sie diese Funktion über einen Thread aufrufen, der die Interaktion mit der Benutzeroberfläche verwaltet, kann die Anwendung nicht reagieren.

Die typische Sequenz für einen Druckauftrag lautet wie folgt:

  1. Um einen Druckauftrag zu starten, rufen Sie StartDocPrinter auf.
  2. Rufen Sie StartPagePrinter auf, um jede Seite zu beginnen.
  3. Um Daten auf eine Seite zu schreiben, rufen Sie WritePrinter auf.
  4. Um jede Seite zu beenden, rufen Sie EndPagePrinter auf.
  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 das Aufrufen von StartPagePrinter und EndPagePrinter möglicherweise nicht erforderlich ist, z. B. wenn der Druckdatentyp die Seiteninformationen enthält.

Wenn eine Seite in einer Spooldatei ungefähr 350 MB überschreitet, kann sie nicht drucken 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 aufrufen von Prozessen zugewiesenen Arbeitsspeichermenge und dem Umfang der Fragmentierung im Prozessheap.

Beispiele

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

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 (einschließlich Windows.h)
Bibliothek
Winspool.lib
DLL
Winspool.drv
Unicode- und ANSI-Name
StartDocPrinterW (Unicode) und StartDocPrinterA (ANSI)

Siehe auch

Addjob

DOC_INFO_1

DOC_INFO_2

EndDocPrinter

EndPagePrinter

OpenPrinter

Drucken

Druckspooler-API-Funktionen

StartDocPrinter

StartPagePrinter

WritePrinter