SetJob 함수
SetJob 함수는 지정된 프린터에서 인쇄 작업을 일시 중지, 다시 시작, 취소 또는 다시 시작합니다. SetJob 함수를 사용하여 인쇄 작업 우선 순위 및 문서 이름과 같은 인쇄 작업 매개 변수를 설정할 수도 있습니다.
SetJob 함수를 사용하여 인쇄 작업에 명령을 지정하거나 인쇄 작업 매개 변수를 설정하거나 동일한 호출에서 둘 다 수행할 수 있습니다. Command 매개 변수의 값은 함수가 Level 및 pJob 매개 변수를 사용하는 방식에 영향을 주지 않습니다. 또한 JOB_INFO_3 SetJob을 사용하여 인쇄 작업 집합을 함께 연결할 수 있습니다. 자세한 내용은 설명 부분을 참조하십시오.
구문
BOOL SetJob(
_In_ HANDLE hPrinter,
_In_ DWORD JobId,
_In_ DWORD Level,
_In_ LPBYTE pJob,
_In_ DWORD Command
);
매개 변수
-
hPrinter [in]
-
관심 있는 프린터 개체에 대한 핸들입니다. OpenPrinter, OpenPrinter2 또는 AddPrinter 함수를 사용하여 프린터 핸들을 검색합니다.
-
JobId [in]
-
인쇄 작업을 지정하는 식별자입니다. AddJob 함수 또는 StartDoc 함수를 호출하여 인쇄 작업 식별자를 가져옵니다.
Level 매개 변수가 3으로 설정된 경우 JobId 매개 변수는 pJob이 가리키는 JOB_INFO_3 구조체의 JobId 멤버와 일치해야 합니다.
-
수준 [in]
-
pJob 매개 변수가 가리키는 작업 정보 구조의 형식입니다.
모든 버전의 Windows: Level 매개 변수를 0, 1 또는 2로 설정할 수 있습니다. 수준을 0으로 설정하면 pJob은 NULL이어야 합니다. 인쇄 작업 매개 변수를 설정하지 않는 경우 이러한 값을 사용합니다.
Level 매개 변수를 3으로 설정할 수도 있습니다.
Windows Vista: Level 매개 변수를 4로 설정할 수도 있습니다.
-
pJob [in]
-
인쇄 작업 매개 변수를 설정하는 구조체에 대한 포인터입니다.
모든 버전의 Windows: pJob은JOB_INFO_1 또는 JOB_INFO_2 구조를 가리킬 수 있습니다.
pJob 은 JOB_INFO_3 구조를 가리킬 수도 있습니다. JOB_INFO_3 구조체의 JobId 및 NextJobId 멤버가 지정한 작업에 대한 JOB_ACCESS_ADMINISTER 액세스 권한이 있어야 합니다.
Windows Vista부터 pJob은JOB_INFO_4 구조를 가리킬 수도 있습니다.
Level 매개 변수가 0이면 pJob은 NULL이어야 합니다.
-
명령 [in]
-
수행할 인쇄 작업입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 의미 - JOB_CONTROL_CANCEL
사용하지 마십시오. 인쇄 작업을 삭제하려면 JOB_CONTROL_DELETE 사용합니다. - JOB_CONTROL_PAUSE
인쇄 작업을 일시 중지합니다. - JOB_CONTROL_RESTART
인쇄 작업을 다시 시작합니다. 인쇄 중일 때만 작업을 다시 시작할 수 있습니다. - JOB_CONTROL_RESUME
일시 중지된 인쇄 작업을 다시 시작합니다. - JOB_CONTROL_DELETE
인쇄 작업을 삭제합니다. - JOB_CONTROL_SENT_TO_PRINTER
포트 모니터에서 인쇄 작업을 종료하는 데 사용됩니다. - JOB_CONTROL_LAST_PAGE_EJECTED
언어 모니터에서 인쇄 작업을 종료하는 데 사용됩니다. - JOB_CONTROL_RETAIN
Windows Vista 이상: 작업이 인쇄된 후 큐에 유지합니다. - JOB_CONTROL_RELEASE
Windows Vista 이상: 인쇄 작업을 해제합니다. SetJob 함수에 대한 동일한 호출을 사용하여 인쇄 작업 매개 변수를 설정하고 인쇄 작업에 명령을 제공할 수 있습니다. 따라서 인쇄 작업 매개 변수를 설정하는 경우 명령 이 0일 필요는 없습니다.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하면 반환 값은 0입니다.
설명
참고
이는 차단 또는 동기 함수이며 즉시 반환되지 않을 수 있습니다. 이 함수가 얼마나 빨리 반환되는지는 애플리케이션을 작성할 때 예측하기 어려운 네트워크 상태, 인쇄 서버 구성 및 프린터 드라이버 구현 요소와 같은 런타임 요인에 따라 달라집니다. 사용자 인터페이스와의 상호 작용을 관리하는 스레드에서 이 함수를 호출하면 애플리케이션이 응답하지 않는 것처럼 보일 수 있습니다.
SetJob 함수를 사용하여 필요한 데이터를 포함하는 JOB_INFO_1, JOB_INFO_2, JOB_INFO_3또는JOB_INFO_4 구조체에 대한 포인터를 제공하여 다양한 인쇄 작업 매개 변수를 설정할 수 있습니다.
특정 프린터에 대한 인쇄 작업을 모두 제거하거나 삭제하려면 Command 매개 변수가 PRINTER_CONTROL_PURGE 설정된 SetPrinter 함수를 호출합니다.
SetJob 호출 시 JOB_INFO_1, JOB_INFO_2 또는 JOB_INFO_4 구조체의 멤버는 JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time 및 TotalPages에 대한 호출에서 무시됩니다.
인쇄 큐에서 인쇄 작업의 위치를 변경하려면 프린터에 대한 PRINTER_ACCESS_ADMINISTER 액세스 권한이 있어야 합니다.
인쇄 큐에서 인쇄 작업의 위치를 설정하지 않으려면 JOB_INFO_1, JOB_INFO_2 또는 JOB_INFO_4 구조체의 위치 멤버를 JOB_POSITION_UNSPECIFIED 설정해야 합니다.
setJob 함수를 JOB_INFO_3 구조체와 함께 사용하여 인쇄 작업 집합(체인이라고도 함)을 연결합니다. 이는 단일 문서가 별도로 렌더링하려는 여러 부분으로 구성된 경우에 유용합니다. 작업 A, B, C 및 D를 순서대로 인쇄하려면 JOB_INFO_4SetJob을 호출하여 A를 B, B에서 C로, C를 D에 연결합니다.
인쇄 작업을 연결하는 경우 다음 사항에 유의하세요.
작업은 체인의 시작 또는 끝에 추가할 수 있습니다.
체인의 모든 작업에는 동일한 데이터 형식이 있어야 합니다.
스풀링이 시작되기 전에 체인을 완전히 연결해야 합니다. 그렇지 않으면 스풀러가 스풀링된 작업을 모두 연결하기 전에 인쇄하고 삭제할 수 있습니다. 체인이 조기에 인쇄되지 않도록 하는 두 가지 방법이 있습니다.
- 체인이 완전히 연결될 때까지 체인의 첫 번째 작업을 일시 중지합니다. 첫 번째 작업의 일시 중지된 상태는 체인에 있는 모든 작업의 상태를 제어합니다.
- 첫 번째 작업을 불완전하게 유지합니다. 즉, 첫 번째 작업에 대해 EndDoc 또는 ScheduleJob 을 호출하지 마세요. 그러나 '스풀링하는 동안 인쇄'를 사용하는 경우(기본값) 체인이 빌드되는 동안 포트를 차단하므로 관련 없는 작업의 인쇄도 차단됩니다.
애플리케이션은 체인 인쇄를 완료하기 전에 사용자가 체인에서 작업을 삭제하는 경우를 처리해야 합니다. JobID가 없는 경우 GetLastError 는 INVALID_PARAMETER 반환합니다.
요구 사항
| 요구 사항 | 값 |
|---|---|
| 지원되는 최소 클라이언트 |
Windows 2000 Professional[데스크톱 앱만] |
| 지원되는 최소 서버 |
Windows 2000 Server[데스크톱 앱만] |
| 헤더 |
|
| 라이브러리 |
|
| DLL |
|
| 유니코드 및 ANSI 이름 |
SetJobW (유니코드) 및 SetJobA (ANSI) |