StartDocPrinter-Funktion

Die Funktion "StartDocPrinter " benachrichtigt den Druckspooler, dass ein Dokument zum Drucken gepoolt werden soll.

Syntax

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

Parameter

hPrinter [in]

Ein Handle zum Drucker. Verwenden Sie die Funktion "OpenPrinter " oder "AddPrinter ", um einen Druckerhandpunkt 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 gibt möglicherweise nicht sofort zurück. Wie schnell diese Funktion zurückgegeben wird, hängt von Laufzeitfaktoren wie Netzwerkstatus, Druckserverkonfiguration und Druckertreiberimplementierungsfaktoren ab, die beim Schreiben einer Anwendung schwer vorhergesagt werden können. Durch Aufrufen dieser Funktion aus einem Thread, der die Interaktion mit der Benutzeroberfläche verwaltet, kann die Anwendung nicht mehr reagieren.

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

  1. Um einen Druckauftrag zu starten, rufen Sie StartDocPrinter auf.
  2. Um mit jeder Seite zu beginnen, rufen Sie StartPagePrinter auf.
  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 erforderlich.
  6. Rufen Sie EndDocPrinter auf, um den Druckauftrag zu beenden.

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 gepoolten Datei ca. 350 MB überschreitet, kann es nicht gedruckt und keine Fehlermeldung gesendet werden. Dies kann beispielsweise auftreten, wenn große EMF-Dateien gedruckt werden. Die Größe der Seite hängt von vielen Faktoren ab, einschließlich der Menge des verfügbaren virtuellen Arbeitsspeichers, der Menge des Arbeitsspeichers, der durch Aufrufprozesse zugewiesen wird, und der Umfang der Fragmentierung im Prozess-Heap.

Beispiele

Ein Beispielprogramm, das diese Funktion verwendet, finden Sie unter How To: Print Using the GDI Print 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 (enthalten 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