Dela via


StartDocPrinter-funktion

Funktionen StartDocPrinter meddelar utskriftshanteraren att ett dokument ska buffras för utskrift.

Syntax

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

Parameterar

hPrinter [in]

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

nivå [in]

Den version av strukturen som pDocInfo pekar på. Det här värdet måste vara 1.

pDocInfo [in]

En pekare till en DOC_INFO_1 struktur som beskriver dokumentet som ska skrivas ut.

Returvärde

Om funktionen lyckas identifierar returvärdet utskriftsjobbet.

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.

Den typiska 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.

Observera att det kanske inte är nödvändigt att anropa StartPagePrinter och EndPagePrinter , till exempel om utskriftsdatatypen innehåller sidinformationen.

När en sida i en buffrad fil överskrider cirka 350 MB kan den inte skrivas ut och inte skicka ett felmeddelande. Detta kan till exempel inträffa vid utskrift av stora EMF-filer. Sidstorleksgränsen beror på många faktorer, inklusive mängden tillgängligt virtuellt minne, mängden minne som allokeras genom att anropa processer och mängden fragmentering i processens heap.

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
Winspool.drv
Unicode- och ANSI-namn
StartDocPrinterW (Unicode) och StartDocPrinterA (ANSI)

Se även

Lägg tilljobb

DOC_INFO_1

DOC_INFO_2

EndDocPrinter

EndPagePrinter

ÖppnaSkrivare

Utskrift

API-funktioner för utskriftspooler

StartPagePrinter

WritePrinter