Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
- Als u een afdruktaak wilt starten, roept u StartDocPrinter aan.
- Als u elke pagina wilt starten, roept u StartPagePrinter aan.
- Als u gegevens naar een pagina wilt schrijven, roept u WritePrinter aan.
- Als u elke pagina wilt beëindigen, roept u EndPagePrinter aan.
- Herhaal 2, 3 en 4 voor zoveel pagina's als nodig is.
- 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 |
|
| Bibliotheek |
|
| DLL |
|