다음을 통해 공유


WritePrinter 함수

WritePrinter 함수는 지정한 프린터에 데이터를 기록해야 한다는 것을 인쇄 스풀러에 알깁니다.

비고

WritePrinter 는 GDI 인쇄만 지원하며 XPS 인쇄에 사용하면 안 됩니다. 인쇄 작업에서 XPS 또는 OpenXPS 인쇄 경로를 사용하는 경우 XPS 인쇄 API를 사용합니다. WritePrinter를 사용하여 스풀러에 XPS 또는 OpenXPS 인쇄 작업을 보내는 것은 지원되지 않으며 결정되지 않은 결과가 발생할 수 있습니다.

문법

BOOL WritePrinter(
  _In_  HANDLE  hPrinter,
  _In_  LPVOID  pBuf,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcWritten
);

매개 변수

hPrinter [in]

프린터에 대한 핸들입니다. OpenPrinter 또는 AddPrinter 함수를 사용하여 프린터 핸들을 검색합니다.

pBuf [in]

프린터에 기록해야 하는 데이터가 들어 있는 바이트 배열에 대한 포인터입니다.

cbBuf [in]

배열의 크기(바이트)입니다.

pcWritten [out]

프린터에 기록된 데이터 바이트 수를 받는 값에 대한 포인터입니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다.

비고

비고

이는 차단 또는 동기 함수이며 즉시 반환되지 않을 수 있습니다. 이 함수의 반환속도는 애플리케이션을 작성할 때 예측하기 어려운 네트워크 상태, 인쇄 서버 구성 및 프린터 드라이버 구현 요소와 같은 런타임 요인에 따라 달라집니다. 사용자 인터페이스와의 상호 작용을 관리하는 스레드에서 이 함수를 호출하면 애플리케이션이 응답하지 않는 것처럼 보일 수 있습니다.

인쇄 작업의 시퀀스는 다음과 같습니다.

  1. 인쇄 작업을 시작하려면 StartDocPrinter를 호출합니다.
  2. 각 페이지를 시작하려면 StartPagePrinter를 호출합니다.
  3. 페이지에 데이터를 쓰려면 WritePrinter를 호출합니다.
  4. 각 페이지를 종료하려면 EndPagePrinter를 호출합니다.
  5. 필요한 만큼 페이지에 대해 2, 3 및 4를 반복합니다.
  6. 인쇄 작업을 종료하려면 EndDocPrinter를 호출합니다.

고급 문서(예: Adobe PDF 또는 Microsoft Word 파일) 또는 기타 프린터 데이터(예: PCL, PS 또는 HPGL)가 프린터로 직접 전송되는 경우 문서에 정의된 인쇄 설정은 Windows 인쇄 설정보다 선례가 됩니다. StartDocPrinter 호출의 pDocInfo 매개 변수에 전달된 DOC_INFO_1 구조체의 pDatatype 멤버 값이 "RAW"인 경우 문서 출력은 하드웨어에서 이해하는 언어로 DEVMODE 스타일 인쇄 작업 설정을 완전히 설명해야 합니다.

Windows XP 이전의 Windows 버전에서 스풀된 파일의 페이지가 약 350MB를 초과하면 인쇄에 실패하고 오류 메시지를 보내지 못할 수 있습니다. 예를 들어 대용량 EMF 파일을 인쇄할 때 이 문제가 발생할 수 있습니다. Windows XP 이전 버전의 Windows의 페이지 크기 제한은 사용 가능한 가상 메모리 양, 프로세스를 호출하여 할당된 메모리 양 및 프로세스 힙의 조각화 양을 비롯한 여러 요인에 따라 달라집니다. Windows XP 이상 버전의 Windows에서는 EMF 파일 크기가 2GB 이하여야 합니다. WritePrinter를 사용하여 프린터 준비 PDL과 같은 EMF가 아닌 데이터를 작성하는 경우 파일 크기는 사용 가능한 디스크 공간에 의해서만 제한됩니다.

예시

이 함수를 사용하는 샘플 프로그램은 방법: GDI 인쇄 API를 사용하여 인쇄를 참조하세요.

요구 사항

요구 사항 가치
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Winspool.h(Windows.h 포함)
라이브러리
Winspool.lib
동적 링크 라이브러리 (DLL)
Spoolss.dll

참고하십시오

인쇄

인쇄 스풀러 API 함수

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

시작페이지프린터