Funktionen WritePrinter

Funktionen WritePrinter meddelar utskriftshanteraren att data ska skrivas till den angivna skrivaren.

Anmärkning

WritePrinter stöder endast GDI-utskrift och får inte användas för XPS-utskrift. Om utskriftsjobbet använder SÖKvägen XPS eller OpenXPS använder du XPS Print API. Det går inte att skicka XPS- eller OpenXPS-utskriftsjobb till bufferten med WritePrinter och kan resultera i obestämda resultat.

Syntax

BOOL WritePrinter(
  _In_  HANDLE  hPrinter,
  _In_  LPVOID  pBuf,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcWritten
);

Parameterar

hPrinter [in]

Ett handtag till skrivaren. Använd funktionen OpenPrinter eller AddPrinter för att hämta ett skrivarhandtag.

pBuf [in]

En pekare till en matris med byte som innehåller de data som ska skrivas till skrivaren.

cbBuf [in]

Matrisens storlek i byte.

pcWritten [out]

En pekare till ett värde som tar emot antalet byte med data som skrivits till skrivaren.

Returvärde

Om funktionen lyckas är returvärdet ett värde som inte är noll.

Om funktionen misslyckas är returvärdet noll.

Anmärkningar

Anmärkning

Det här är en blockerande eller synkron funktion och kanske inte returneras omedelbart. Hur snabbt den här funktionen returneras beror på körningsfaktorer som nätverksstatus, utskriftsserverkonfiguration och implementeringsfaktorer för skrivardrivrutiner som är svåra att förutsäga när du skriver ett program. Att anropa den här funktionen från en tråd som hanterar interaktion med användargränssnittet kan göra att programmet verkar inte svara.

Sekvensen för ett utskriftsjobb är följande:

  1. Starta ett utskriftsjobb genom att anropa StartDocPrinter.
  2. Starta varje sida genom att anropa StartPagePrinter.
  3. Om du vill skriva data till en sida anropar du WritePrinter.
  4. Avsluta varje sida genom att anropa EndPagePrinter.
  5. Upprepa 2, 3 och 4 för så många sidor som behövs.
  6. Avsluta utskriftsjobbet genom att anropa EndDocPrinter.

När ett högnivådokument (till exempel en Adobe PDF- eller Microsoft Word-fil) eller andra skrivardata (till exempel PCL, PS eller HPGL) skickas direkt till en skrivare, får utskriftsinställningarna som definieras i dokumentet prejudikat över Windows-utskriftsinställningarna. Dokument utdata när värdet för pDatatype-medlemmen i den DOC_INFO_1 struktur som skickades i pDocInfo-parametern för StartDocPrinter-anropet är "RAW" måste helt beskriva utskriftsjobbinställningarna i DEVMODE-stil på det språk som förstås av maskinvaran.

I versioner av Windows före Windows XP, när en sida i en buffrad fil överskrider cirka 350 MB, kan den misslyckas med att skriva ut och inte skicka ett felmeddelande. Detta kan till exempel inträffa vid utskrift av stora EMF-filer. Sidstorleksgränsen i versioner av Windows före Windows XP beror på många faktorer, inklusive mängden tillgängligt virtuellt minne, mängden minne som allokeras genom anropsprocesser och mängden fragmentering i processens heap. I Windows XP och senare versioner av Windows måste EMF-filer vara 2 GB eller mindre stora. Om WritePrinter används för att skriva icke EMF-data, till exempel skrivarklar PDL, begränsas filens storlek endast av det tillgängliga diskutrymmet.

Exempel

Ett exempelprogram som använder den här funktionen finns i How To: Print Using the GDI Print API (How To: Print Using the GDI Print API).

Kravspecifikation

Krav Värde
Lägsta klient som stöds
Windows 2000 Professional [endast skrivbordsappar]
Lägsta server som stöds
Windows 2000 Server [endast skrivbordsappar]
Rubrik
Winspool.h (inkludera Windows.h)
Bibliotek
Winspool.lib
DLL
Spoolss.dll

Se även

Utskrift

API-funktioner för utskriftspooler

EndDocPrinter

EndPagePrinter

ÖppnaSkrivare

StartDocPrinter

StartPagePrinter