The WritePrinter function notifies the print spooler that data should be written to the specified printer.
BOOL WritePrinter( _In_ HANDLE hPrinter, _In_ LPVOID pBuf, _In_ DWORD cbBuf, _Out_ LPDWORD pcWritten );
- hPrinter [in]
- pBuf [in]
A pointer to an array of bytes that contains the data that should be written to the printer.
- cbBuf [in]
The size, in bytes, of the array.
- pcWritten [out]
A pointer to a value that receives the number of bytes of data that were written to the printer.
If the function succeeds, the return value is a nonzero value.
If the function fails, the return value is zero.
The sequence for a print job is as follows:
- To begin a print job, call StartDocPrinter.
- To begin each page, call StartPagePrinter.
- To write data to a page, call WritePrinter.
- To end each page, call EndPagePrinter.
- Repeat 2, 3, and 4 for as many pages as necessary.
- To end the print job, call EndDocPrinter.
When a high-level document (such as an Adobe PDF or Microsoft Word file) or other printer data (such PCL, PS, or HPGL) is sent directly to a printer, the print settings defined in the document take precedent over Windows print settings. Documents output when the value of the pDatatype member of the DOC_INFO_1 structure that was passed in the pDocInfo parameter of the StartDocPrinter call is "RAW" must fully describe the DEVMODE-style print job settings in the language understood by the hardware.
In versions of Windows prior to Windows XP, when a page in a spooled file exceeds approximately 350 MB, it can fail to print and not send an error message. For example, this can occur when printing large EMF files. The page size limit in versions of Windows prior to Windows XP depends on many factors including the amount of virtual memory available, the amount of memory allocated by calling processes, and the amount of fragmentation in the process heap. In Windows XP and later versions of Windows, EMF files must be 2GB or less in size. If WritePrinter is used to write non EMF data, such as printer-ready PDL, the size of the file is limited only by the available disk space.
For a sample program that uses this function, see How To: Print Using the GDI Print API.
Minimum supported client
|Windows 2000 Professional [desktop apps only]|
Minimum supported server
|Windows 2000 Server [desktop apps only]|
- Print Spooler API Functions