다음을 통해 공유


SetJob 함수

SetJob 함수는 지정된 프린터에서 인쇄 작업을 일시 중지, 다시 시작, 취소 또는 다시 시작합니다. SetJob 함수를 사용하여 인쇄 작업 우선 순위 및 문서 이름과 같은 인쇄 작업 매개 변수를 설정할 수도 있습니다.

SetJob 함수를 사용하여 인쇄 작업에 명령을 지정하거나 인쇄 작업 매개 변수를 설정하거나 동일한 호출에서 둘 다 수행할 수 있습니다. Command 매개 변수의 값은 함수가 LevelpJob 매개 변수를 사용하는 방식에 영향을 주지 않습니다. 또한 setJobJOB_INFO_3 사용하여 인쇄 작업 집합을 함께 연결할 수 있습니다. 자세한 내용은 설명 부분을 참조하십시오.

구문

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으로 설정하면 pJobNULL이어야 합니다. 인쇄 작업 매개 변수를 설정하지 않는 경우 이러한 값을 사용합니다.

Level 매개 변수를 3으로 설정할 수도 있습니다.

Windows Vista부터: Level 매개 변수를 4로 설정할 수도 있습니다.

pJob [in]

인쇄 작업 매개 변수를 설정하는 구조체에 대한 포인터입니다.

모든 버전의 Windows: pJob은JOB_INFO_1 또는 JOB_INFO_2 구조를 가리킬 수 있습니다.

pJobJOB_INFO_3 구조를 가리킬 수도 있습니다. JOB_INFO_3 구조체의 JobIdNextJobId 멤버가 지정한 작업에 대한 JOB_ACCESS_ADMINISTER 액세스 권한이 있어야 합니다.

Windows Vista 시작: pJobJOB_INFO_4 구조를 가리킬 수도 있습니다.

Level 매개 변수가 0이면 pJobNULL이어야 합니다.

명령 [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, TimeTotalPages.

인쇄 큐에서 인쇄 작업의 위치를 변경하려면 프린터에 대한 PRINTER_ACCESS_ADMINISTER 액세스 권한이 있어야 합니다.

인쇄 큐에서 인쇄 작업의 위치를 설정하지 않으려면 JOB_INFO_1, JOB_INFO_2또는JOB_INFO_4 구조체의 Position 멤버를 JOB_POSITION_UNSPECIFIED 설정해야 합니다.

setJob 함수를 JOB_INFO_3 구조체와 함께 사용하여 인쇄 작업 집합(체인이라고도 함)을 연결합니다. 이 기능은 단일 문서가 별도로 렌더링하려는 여러 부분으로 구성된 경우에 유용합니다. 작업 A, B, C 및 D를 순서대로 인쇄하려면 JOB_INFO_4있는 SetJob을 호출하여 A를 B, B에서 C로, C를 D에 연결합니다.

인쇄 작업을 연결하는 경우 다음 사항에 유의하세요.

  • 작업은 체인의 시작 또는 끝에 추가할 수 있습니다.

  • 체인의 모든 작업에는 동일한 데이터 형식이 있어야 합니다.

  • 스풀링이 시작되기 전에 체인을 완전히 연결해야 합니다. 그렇지 않으면 스풀링된 작업을 모두 연결하기 전에 스풀러가 인쇄 및 삭제할 수 있습니다. 체인이 조기에 인쇄되지 않도록 하는 두 가지 방법이 있습니다.

    • 체인이 완전히 연결될 때까지 체인의 첫 번째 작업을 일시 중지합니다. 첫 번째 작업의 일시 중지된 상태는 체인에 있는 모든 작업의 상태를 제어합니다.
    • 첫 번째 작업을 불완전하게 유지합니다. 즉, 첫 번째 작업에 대해 EndDoc 또는 ScheduleJob 을 호출하지 마세요. 그러나 '스풀링하는 동안 인쇄'를 사용하도록 설정한 경우(기본값) 체인이 빌드되는 동안 이 메서드는 포트를 차단하므로 관련 없는 작업의 인쇄도 차단됩니다.
  • 애플리케이션은 체인이 인쇄를 완료하기 전에 사용자가 체인에서 작업을 삭제하는 경우를 처리해야 합니다. JobID가 없으면 GetLastErrorINVALID_PARAMETER 반환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
WinSpool.h(Windows.h 포함)
라이브러리
WinSpool.lib
DLL
WinSpool.drv
유니코드 및 ANSI 이름
SetJobW (유니코드) 및 SetJobA (ANSI)

추가 정보

인쇄

인쇄 스풀러 API 함수

AddJob

GetJob

OpenPrinter

SetPrinter

JOB_INFO_1

JOB_INFO_2

JOB_INFO_3

JOB_INFO_4