StartXpsPrintJob1 함수(xpsprint.h)
[StartXpsPrintJob1은 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다. ]
XPS 문서 콘텐츠를 프린터로 보내기 위한 인쇄 작업을 만듭니다. 이 함수는 StartXpsPrintJob보다 더 효율적인 인쇄 경로를 만듭니다.
구문
HRESULT StartXpsPrintJob1(
[in] LPCWSTR printerName,
[in, optional] LPCWSTR jobName,
[in, optional] LPCWSTR outputFileName,
[in, optional] HANDLE progressEvent,
[in, optional] HANDLE completionEvent,
[out, optional] IXpsPrintJob **xpsPrintJob,
[out] IXpsOMPackageTarget **printContentReceiver
);
매개 변수
[in] printerName
이 작업이 연결될 프린터의 이름입니다.
[in, optional] jobName
이 작업과 연결할 사용자 지정 작업 이름입니다. 작업에 별도의 사용자 지정 이름이 필요하지 않은 경우 이 매개 변수를 NULL 로 설정할 수 있습니다.
[in, optional] outputFileName
이 작업의 출력을 리디렉션할 파일 또는 포트의 파일 이름입니다. 이 값을 설정하면 인쇄 작업의 출력이 지정된 파일 또는 포트로 전달됩니다. printerName으로 지정된 프린터로 인쇄 작업을 보내려면 이 매개 변수를 NULL로 설정해야 합니다.
[in, optional] progressEvent
다음 인쇄 작업 중 하나가 변경될 때 신호를 수신하는 이벤트 핸들입니다.
- 인쇄 작업에 작업 ID가 할당됨
- 페이지 인쇄가 완료되었습니다.
- 문서 인쇄가 완료되었습니다.
- 인쇄 작업이 취소되었거나 오류로 인해 종료되었습니다.
XPS 인쇄 API는 호출자의 책임인 이 이벤트를 다시 설정하지 않습니다.
진행률에 대한 알림을 받지 않으려면 이 매개 변수를 NULL 로 설정합니다.
[in, optional] completionEvent
인쇄 작업이 완료될 때 신호를 수신하는 이벤트 핸들입니다. 이 이벤트는 StartXpsPrintJob1 호출당 정확히 한 번 신호를 받을 수 있습니다. XPS 인쇄 API는 호출자의 책임인 이 이벤트를 다시 설정하지 않습니다.
완료에 대한 알림을 받지 않으려면 이 매개 변수를 NULL 로 설정합니다.
[out, optional] xpsPrintJob
StartXpsPrintJob1에서 만든 인쇄 작업을 나타내는 IXpsPrintJob 인터페이스에 대한 포인터입니다. 인쇄 작업의 상태 가져오거나 취소하려면 IXpsPrintJob 인터페이스를 사용합니다. 필요하지 않은 경우 이 매개 변수를 NULL 로 설정합니다.
[out] printContentReceiver
이 함수가 만든 IXpsOMPackageTarget 인터페이스에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL로 설정할 수 없습니다.
이 함수가 만든 인쇄 작업에 문서 콘텐츠를 보내려면 xpsOMPackageTarget에서 반환된 IXpsOMPackageTarget 인터페이스의 CreateXpsOMPackageWriter 메서드를 호출하여 만든 IXpsOMPackageWriter 인터페이스 를 사용합니다.
반환 값
이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.
반환 코드 | Description |
---|---|
|
메서드가 성공했습니다. |
|
printerName 또는 xpsOMPackageTarget 이 NULL입니다. |
|
메모리가 부족하여 새 IXpsPrintJob 개체를 만들 수 없습니다. |
설명
StartXpsPrintJob1 은 비동기 함수이므로 인쇄 스풀러가 인쇄 작업을 만들거나 시작하기 전에 반환할 수 있습니다.
StartXpsPrintJob1이 성공적으로 반환될 때까지 xpsPrintJob 및 xpsOMPackageTarget에서 반환되는 인터페이스를 사용하지 마세요.
호출자가 데이터 보내기를 시작한 후 progressEvent에서 전달된 이벤트에 신호를 보내는 진행률 이벤트를 모니터링하는 것이 좋은 프로그래밍 방법입니다. 이벤트가 신호를 받으면 호출자는 IXpsPrintJob::GetJobStatus를 호출하여 인쇄 작업의 현재 상태 가져와야 합니다.
인쇄 작업이 성공적으로 완료되었는지 여부에 관계없이 completionEvent 에 전달된 이벤트는 한 번만 신호를 보냅니다. 데이터 손실을 방지하기 위해 호출자가 완료 이벤트를 모니터링하고 완료 이벤트가 신호를 받을 때까지 스레드나 인쇄 작업을 만든 애플리케이션이 종료되지 않도록 하는 것이 좋습니다.
작업 상태는 인쇄 스풀러에 의해 저장되거나 큐에 대기되지 않습니다. 작업 처리는 이벤트가 신호를 받은 후 상태 읽을 때까지 기다리지 않으므로 애플리케이션이 변경 알림을 받은 시간과 IXpsPrintJob::GetJobStatus라는 시간 사이의 지연에 따라 호출자가 일부 상태 변경을 놓칠 수 있습니다. 후속 알림을 받으려면 애플리케이션이 알림을 받은 후 진행률 이벤트를 다시 설정해야 합니다.
StartXpsPrintJob1에 대한 호출이 실패하면 인쇄 스풀러는 작업 상태 업데이트하고 완료 및 진행률 이벤트를 알리고 오류 코드를 반환합니다. 실패한 인쇄 작업의 상태 가져오려면 IXpsPrintJob::GetJobStatus를 호출합니다.
StartXpsPrintJob1은 completionEvent 및 progressEvent에서 DuplicateHandle을 호출하여 작업 수명 동안 유효한 상태를 유지하도록 합니다. 인쇄 스풀러는 이벤트에 중복 핸들을 사용하므로 호출자는 작업 실행에 영향을 주지 않고 언제든지 이러한 핸들을 닫을 수 있습니다. 그러나 completionEvent 이벤트가 신호를 받고 호출자가 이를 관찰한 후에만 호출자가 이러한 핸들을 닫는 것이 좋습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 SP1, Windows Vista 및 Windows Vista용 플랫폼 업데이트 보충 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 SP1, Windows Server 2008 및 Windows Server 2008용 플랫폼 업데이트 보충 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | xpsprint.h |
라이브러리 | XpsPrint.lib |
DLL | XpsPrint.dll |