3.1.4.14.2 RpcIppCreateJobOnPrinter (Opnum 119)
RpcIppCreateJobOnPrinter calls the IPP printer handler to issue create-job message if the printer supports it or, otherwise, cache the attributes. <404> See [RFC8011], section 4.2.4.
-
HRESULT RpcIppCreateJobOnPrinter( [in] PRINTER_HANDLE hPrinter, [in] DWORD jobId, [in, string, unique] const wchar_t* pdlFormat, [in] DWORD jobAttributeGroupBufferSize, [in, size_is(jobAttributeGroupBufferSize)] BYTE* jobAttributeGroupBuffer, [out, ref] DWORD* ippResponseBufferSize, [out, size_is(, *ippResponseBufferSize), ref] BYTE** ippResponseBuffer );
hPrinter: A PRINTER_HANDLE (section 2.2.1.1.4) to a printer object that was opened by RpcAddPrinter (section 3.1.4.2.3), RpcAddPrinterEx (section 3.1.4.2.15), RpcOpenPrinter (section 3.1.4.2.2), or RpcOpenPrinterEx (section 3.1.4.2.14).
jobId: The identifier of a print job. This value MUST NOT be zero.
pdlFormat: Pointer to a null-terminated string of 16-bit Unicode characters representing the format of the PDL. Supported PDL formats depend on the printer. For the list of possible values for this parameter, see [RFC8011], section 5.1.10.
jobAttributeGroupBufferSize: The size, in bytes, of the buffer pointed to by the jobAttributeGroupBuffer.
jobAttributeGroupBuffer: A pointer to a buffer containing a serialized IPP attribute group (see [RFC8010], section 4.2.1).
ippResponseBufferSize: A pointer to a variable that receives the number of bytes in the buffer pointed to by the ippResponseBuffer parameter on a successful return from this call.
ippResponseBuffer: On a successful return from this call, this parameter is a pointer to the buffer containing the serialized IPP response from the printer (see [RFC8010], section 3.1.1) or the response generated by the server in case the job is not yet active, and the attributes have been cached.
Return Values: This method MUST return zero or an HRESULT success value (see [MS-ERREF], section 2.1) to indicate successful completion, or an HRESULT error value to indicate failure.
On receiving this message, the server MUST validate the following:
Perform the validation steps that are specified in PRINTER_HANDLE Parameters (section 3.1.4.1.11).
Verify that ippResponseBuffer and ippResponseBufferSize parameters are not null.
If parameter validation fails, the server MUST fail the operation immediately and return a nonzero error response to the print client. Otherwise, the server MUST process the message and compose a response to the client as follows:
Allocate and initialize a buffer with a serialized IPP response to be returned to the client via the ippResponseBuffer parameter.
Update the value pointed to by ippResponseBufferSize with the number of bytes allocated for the buffer pointed to by the ippResponseBuffer parameter.
Return the status of the operation.
On successful completion of this call, the client SHOULD free the buffer specified by the ippResponseBuffer parameter.