Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die WritePrinter-Funktion benachrichtigt den Druckspooler, dass Daten in den angegebenen Drucker geschrieben werden sollen.
Hinweis
WritePrinter unterstützt nur GDI-Druck und darf nicht für XPS-Druck verwendet werden. Wenn Ihr Druckauftrag xpS oder den OpenXPS-Druckpfad verwendet, verwenden Sie die XPS-Druck-API. Das Senden von XPS- oder OpenXPS-Druckaufträgen an den Spooler mit WritePrinter wird nicht unterstützt und kann zu unbestimmten Ergebnissen führen.
Syntax
BOOL WritePrinter(
_In_ HANDLE hPrinter,
_In_ LPVOID pBuf,
_In_ DWORD cbBuf,
_Out_ LPDWORD pcWritten
);
Die Parameter
-
hPrinter [in]
-
Ein Ziehpunkt für den Drucker. Verwenden Sie die OpenPrinter- oder AddPrinter-Funktion , um einen Druckerhandle abzurufen.
-
pBuf [in]
-
Ein Zeiger auf ein Bytearray, das die Daten enthält, die auf den Drucker geschrieben werden sollen.
-
cbBuf [in]
-
Die Größe des Arrays in Byte.
-
pcWritten [out]
-
Ein Zeiger auf einen Wert, der die Anzahl der Daten empfängt, die in den Drucker geschrieben wurden.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Wert ungleich Null.
Wenn die Funktion fehlschlägt, 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, Druckserverkonfiguration und Implementierungsfaktoren des Druckertreibers ab, die beim Schreiben einer Anwendung schwer vorhergesagt werden können. Das Aufrufen dieser Funktion über einen Thread, der die Interaktion mit der Benutzeroberfläche verwaltet, kann dazu führen, dass die Anwendung scheinbar nicht reagiert.
Die Reihenfolge für einen Druckauftrag lautet wie folgt:
- Rufen Sie StartDocPrinter auf, um einen Druckauftrag zu starten.
- Rufen Sie StartPagePrinter auf, um jede Seite zu beginnen.
- Rufen Sie WritePrinter auf, um Daten auf eine Seite zu schreiben.
- Rufen Sie EndPagePrinter auf, um jede Seite zu beenden.
- Wiederholen Sie 2, 3 und 4 für beliebig viele Seiten.
- Rufen Sie EndDocPrinter auf, um den Druckauftrag zu beenden.
Wenn ein allgemeines Dokument (z. B. eine Adobe PDF- oder Microsoft Word-Datei) oder andere Druckerdaten (z. B. PCL, PS oder HPGL) direkt an einen Drucker gesendet wird, haben die im Dokument definierten Druckeinstellungen Vorrang vor den Windows-Druckeinstellungen. Dokumente werden ausgegeben, wenn der Wert des pDatatype-Members der DOC_INFO_1-Struktur , die im pDocInfo-Parameter des StartDocPrinter-Aufrufs übergeben wurde, "RAW" ist, die Einstellungen für druckauftrags im DEVMODE-Stil in der von der Hardware verstandenen Sprache vollständig beschreiben.
In Windows-Versionen vor Windows XP kann es nicht gedruckt werden, wenn eine Seite in einer spoolierten Datei ca. 350 MB überschreitet. Dies kann beispielsweise beim Drucken großer EMF-Dateien auftreten. Der Grenzwert für die Seitengröße in Versionen von Windows vor Windows XP hängt von vielen Faktoren ab, einschließlich der verfügbaren Menge des virtuellen Speichers, der Menge an Arbeitsspeicher, die durch Aufrufen von Prozessen zugewiesen wird, und der Menge der Fragmentierung im Prozesshap. In Windows XP und höheren Versionen von Windows müssen EMF-Dateien 2 GB oder weniger groß sein. Wenn WritePrinter verwendet wird, um nicht EMF-Daten zu schreiben, z. B. druckerbereite PDL, ist die Größe der Datei nur durch den verfügbaren Speicherplatz begrenzt.
Beispiele
Ein Beispielprogramm, das diese Funktion verwendet, finden Sie unter How To: Print Using the GDI Print API.
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindest unterstützter Client |
Windows 2000 Professional [nur Desktop-Apps] |
| Unterstützter Server (Mindestversion) |
Windows 2000 Server [nur Desktop-Apps] |
| Kopfzeile |
|
| Bibliothek |
|
| DLL |
|