BOOL SetJob( HANDLE hPrinter, /* handle of printer object */ DWORD dwJob, /* job-identification value */ DWORD dwLevel, /* structure level */ LPBYTE lpbJob, /* address of job info structures */ DWORD dwCommand /* job-command value */ );
Pauses, resumes, cancels, or restarts the specified print job on the given printer. This function can also be used to set print job parameters such as the job priority, document name, and so forth.
| hPrinter | Identifies the printer. | 
| dwJob | Specifies the print job. | 
| dwLevel | Specifies the version of the structure to which lpbJob points. This value must be 0, 1, or 2. | 
| lpbJob | Points to either a JOB_INFO_1 or JOB_INFO_2 structure. If dwLevel is 0, this pointer must be NULL; if dwLevel is 1, the array contains a JOB_INFO_1 structure and if dwLevel is 2, the array contains a JOB_INFO_2 structure. | 
| dwCommand | Specifies the operation which should be performed. It can be one of the following values: | 
| JOB_CONTROL_CANCEL | Deletes a print job. | 
| JOB_CONTROL_PAUSE | Pauses a print job. | 
| JOB_CONTROL_RESTART | Restarts a print job at the beginning of the job. A job can only be restarted if it is printing. | 
| JOB_CONTROL_RESUME | Resumes a paused print job. | 
The SetJob function can be used to set various job parameters by supplying a pointer to a JOB_INFO_1 or JOB_INFO_2 structure that contains the necessary data.
To remove or delete all the print jobs for a particular printer, call the SetPrinter function and set the PRINTER_CONTROL_PURGE value.
The following fields of a JOB_INFO_1 or JOB_INFO_2 structure will be ignored on a call to SetJob: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, and Time.
The Win32 API documentation does not define whether or not operations specified by dwCommand should be performed if dwLevel is non-zero. In the Windows 95 local Print Provider however, dwCommand operations are only performed if dwLevel is zero. This is the suggested implementation.