Delen via


De functie WritePrinter

De functie WritePrinter meldt de afdrukspooler dat gegevens naar de opgegeven printer moeten worden geschreven.

Opmerking

WritePrinter ondersteunt alleen GDI-afdrukken en mag niet worden gebruikt voor XPS-afdrukken. Als uw afdruktaak gebruikmaakt van xps of het openXPS-afdrukpad, gebruikt u de XPS-afdruk-API. Het verzenden van XPS- of OpenXPS-afdruktaken naar de spooler met WritePrinter wordt niet ondersteund en kan leiden tot onbepaalde resultaten.

Syntaxis

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

Parameterwaarden

hPrinter [in]

Een handgreep naar de printer. Gebruik de functie OpenPrinter of AddPrinter om een printergreep op te halen.

pBuf [in]

Een aanwijzer naar een matrix van bytes die de gegevens bevat die naar de printer moeten worden geschreven.

cbBuf [in]

De grootte, in bytes, van de matrix.

pcWritten [out]

Een aanwijzer naar een waarde die het aantal bytes aan gegevens ontvangt dat naar de printer is geschreven.

Retourwaarde

Als de functie slaagt, is de retourwaarde een niet-nulwaarde.

Als de functie mislukt, is de retourwaarde nul.

Opmerkingen

Opmerking

Dit is een blokkerende of synchrone functie en retourneert mogelijk niet onmiddellijk. Hoe snel deze functie retourneert, is afhankelijk van runtimefactoren zoals netwerkstatus, configuratie van afdrukserver en implementatiefactoren van printerstuurprogramma's die moeilijk te voorspellen zijn bij het schrijven van een toepassing. Als u deze functie aanroept vanuit een thread die interactie met de gebruikersinterface beheert, kan de toepassing niet reageren.

De volgorde voor een afdruktaak is als volgt:

  1. Als u een afdruktaak wilt starten, roept u StartDocPrinter aan.
  2. Als u elke pagina wilt starten, roept u StartPagePrinter aan.
  3. Als u gegevens naar een pagina wilt schrijven, roept u WritePrinter aan.
  4. Als u elke pagina wilt beëindigen, roept u EndPagePrinter aan.
  5. Herhaal 2, 3 en 4 voor zoveel pagina's als nodig is.
  6. Als u de afdruktaak wilt beëindigen, roept u EndDocPrinter aan.

Wanneer een document op hoog niveau (zoals een Adobe PDF- of Microsoft Word-bestand) of andere printergegevens (zoals PCL, PS of HPGL) rechtstreeks naar een printer wordt verzonden, nemen de afdrukinstellingen die in het document zijn gedefinieerd, de broninstellingen voor Windows-afdrukinstellingen over. Documenten worden uitgevoerd wanneer de waarde van het lid pDatatype van de DOC_INFO_1-structuur die is doorgegeven in de parameter pDocInfo van de StartDocPrinter-aanroep 'RAW' is, moet de afdruktaakinstellingen in devmode-stijl volledig beschrijven in de taal die door de hardware wordt begrepen.

In versies van Windows vóór Windows XP kan een pagina in een gepoold bestand niet meer dan ongeveer 350 MB afdrukken en kan er geen foutbericht worden verzonden. Dit kan bijvoorbeeld gebeuren bij het afdrukken van grote EMF-bestanden. De paginagroottelimiet in versies van Windows vóór Windows XP is afhankelijk van veel factoren, waaronder de hoeveelheid beschikbaar virtueel geheugen, de hoeveelheid geheugen die is toegewezen door aanroepende processen en de hoeveelheid fragmentatie in de proces-heap. In Windows XP en latere versies van Windows moeten EMF-bestanden 2 GB of kleiner zijn. Als WritePrinter wordt gebruikt om niet-EMF-gegevens te schrijven, zoals PDL die gereed is voor de printer, wordt de grootte van het bestand alleen beperkt door de beschikbare schijfruimte.

Voorbeelden

Zie Procedure voor een voorbeeldprogramma dat gebruikmaakt van deze functie : Afdrukken met behulp van de GDI Print-API.

Behoeften

Voorwaarde Waarde
Minimaal ondersteunde client
Windows 2000 Professional [alleen desktop-apps]
Minimaal ondersteunde server
Windows 2000 Server [alleen desktop-apps]
Koptekst
Winspool.h (inclusief Windows.h)
Bibliotheek
Winspool.lib
DLL
Spoolss.dll

Zie ook

Afdrukken

Spooler-API-functies afdrukken

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

StartPagePrinter