Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Starta ett utskriftsjobb genom att anropa StartDocPrinter.
- Starta varje sida genom att anropa StartPagePrinter.
- Om du vill skriva data till en sida anropar du WritePrinter.
- Avsluta varje sida genom att anropa EndPagePrinter.
- Upprepa 2, 3 och 4 för så många sidor som behövs.
- 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 |
|
| Bibliotek |
|
| DLL |
|