SplPdWrite

SplPdWrite is an API exported by port drivers. It is called by PrtWrite to send print job data to the device. If the BIDI software protocol being used requires print job data to have a wrapper around it (see BIDI_Q_SW(800Ch) in BIDI Command Structures and Command Flow), then the spooler will call the protocol converter's API, SplProtWrite. SplProtWrite will then call the port driver's SplPdWrite routine.

Syntax
SplPdWrite(hDevice, pchData, cbData, pcbWritten);

Parameters

 * hDevice (HFILE) - input
 * Handle from SplPdOpen.


 * pchData (PVOID) - input
 * Pointer to data buffer to write.


 * cbData (ULONG) - input
 * Length of data, in bytes.


 * pcbWritten (ULONG) - input
 * Pointer to count of bytes actually written to the device.


 * This value can be updated even when an unsuccessful return code is given, if some of the data was sent to the printer.

Returns

 * rc (ULONG) - returns : Return codes.


 * 0 Success
 * Note:: *pcbWritten is updated with the number of bytes sent to the printer. If all bytes were not written, it should be considered an error.


 * 6(ERROR_INVALID_HANDLE)
 * Invalid handle given.


 * 28(ERROR_OUT_OF_PAPER)
 * The printer is out of paper.


 * 29(ERROR_WRITE_FAULT)
 * Failure attempting to write to the device. Specific error alerts should be sent to the spooler to better define the problem.


 * 87(ERROR_INVALID_PARAMETER)
 * Invalid buffer given.

Sample

 * 1) define INCL_SPL
 * 2) define INCL_SPLBIDI
 * 3) include 

HFILE   hDevice;     /*  Handle from SplPdOpen. */ PVOID   pchData;     /*  Pointer to data buffer to write. */ ULONG   cbData;      /*  Length of data, in bytes. */ ULONG   pcbWritten;  /*  Pointer to count of bytes actually written to the device. */ ULONG   rc;          /*  Return codes. */

rc = SplPdWrite(hDevice, pchData, cbData,      pcbWritten);