DocumentEvent 함수

DocumentEvent 함수는 문서 인쇄와 관련된 이벤트에 대한 이벤트 처리기입니다.

구문

HRESULT DocumentEvent(
  _In_  HANDLE hPrinter,
  _In_  HDC    hdc,
        INT    iEsc,
        ULONG  cbIn,
  _In_  PVOID  pvIn,
        ULONG  cbOut,
  _Out_ PVOID  pvOut
);

매개 변수

hPrinter [in]

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

hdc [in]

CreateDC 호출에 의해 생성되는 디바이스 컨텍스트 핸들입니다. iEsc가 DOCUMENTEVENT_CREATEDCPRE 설정되면 0입니다. 64비트 버전의 Windows에서 32비트 애플리케이션에서 인쇄하는 제한 사항은 비고를 참조하세요.

iEsc

처리할 이벤트를 식별하는 이스케이프 코드입니다. 이 매개 변수는 다음 정수 상수 중 하나일 수 있습니다.

상수 이벤트
DOCUMENTEVENT_ABORTDOC
GDI는 AbortDoc 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_CREATEDCPOST
GDI는 CreateDC 또는 CreateIC 함수에 대한 호출을 방금 처리했습니다.
iEsc가 DOCUMENTEVENT_CREATEDCPRE 설정된 DocumentEvent 에 대한 이전 호출이 없는 한 이 이스케이프 코드를 사용하면 안 됩니다.
DOCUMENTEVENT_CREATEDCPRE
GDI는 CreateDC 또는 CreateIC 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_DELETEDC
GDI는 DeleteDC 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_ENDDOCPOST
GDI는 EndDoc 함수에 대한 호출을 방금 처리했습니다.
DOCUMENTEVENT_ENDDOCPRE 또는 DOCUMENTEVENT_ENDDOC
GDI는 EndDoc 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_ENDPAGE
GDI는 EndPage 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_ESCAPE
GDI는 ExtEscape 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_QUERYFILTER
DOCUMENTEVENT_QUERYFILTER 이벤트는 스풀러가 드라이버가 응답할 DOCUMENTEVENT_ XXX 이벤트 목록을 드라이버에 쿼리할 수 있는 기회를 나타냅니다. 이 이벤트는 DOCUMENTEVENT_CREATEDCPRE 이벤트를 전달하는 DocumentEvent 호출 직전에 발생합니다.
DOCUMENTEVENT_RESETDCPOST
GDI는 ResetDC 함수에 대한 호출을 방금 처리했습니다.
iEsc가 DOCUMENTEVENT_RESETDCPRE 설정된 DocumentEvent 에 대한 이전 호출이 없는 한 이 이스케이프 코드를 사용하면 안 됩니다.
DOCUMENTEVENT_RESETDCPRE
GDI는 ResetDC 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_STARTDOCPOST
GDI는 StartDoc 함수에 대한 호출을 방금 처리했습니다.
DOCUMENTEVENT_STARTDOCPRE 또는 DOCUMENTEVENT_STARTDOC
GDI는 StartDoc 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_STARTPAGE
GDI는 StartPage 함수에 대한 호출을 처리하려고 합니다.

cbIn

pvIn에서 가리키는 버퍼의 크기(바이트)입니다.

pvIn [in]

버퍼에 대한 포인터입니다. 버퍼에 포함된 내용은 다음 표와 같이 iEsc에 따라 달라집니다.

상수 pvin 콘텐츠
DOCUMENTEVENT_ABORTDOC
사용되지 않습니다.
DOCUMENTEVENT_CREATEDCPOST
pvIn은 iEsc 매개 변수가 DOCUMENTEVENT_CREATEDCPRE 설정된 이 함수에 대한 이전 호출에서 pvOut 매개 변수에 지정된 DEVMODE 구조체에 대한 포인터주소를 포함합니다.
DOCUMENTEVENT_CREATEDCPRE
pvIn은 Windows 드라이버 개발 키트에 설명된 DOCEVENT_CREATEDCPRE 구조를 가리킵니다.
DOCUMENTEVENT_DELETEDC
사용되지 않습니다.
DOCUMENTEVENT_ENDDOCPOST
사용되지 않습니다.
DOCUMENTEVENT_ENDDOCPRE 또는 DOCUMENTEVENT_ENDDOC
사용되지 않습니다.
DOCUMENTEVENT_ENDPAGE
사용되지 않습니다.
DOCUMENTEVENT_ESCAPE
pvIn은 Windows 드라이버 개발 키트에 설명된 DOCEVENT_ESCAPE 구조를 가리킵니다.
DOCUMENTEVENT_QUERYFILTER
DOCUMENTEVENT_CREATEDCPRE 경우와 동일합니다.
DOCUMENTEVENT_RESETDCPOST
pvIn은 iEsc 매개 변수가 DOCUMENTEVENT_RESETDCPRE 설정된 이 함수에 대한 이전 호출에서 pvOut 매개 변수에 지정된 DEVMODE 구조체에 대한 포인터주소를 포함합니다.
DOCUMENTEVENT_RESETDCPRE
pvIn에는 ResetDC 호출자가 제공한 DEVMODE 구조체에 대한 포인터주소가 포함됩니다.
DOCUMENTEVENT_STARTDOCPOST
pvIn은 StartDoc에서 반환된 인쇄 작업 식별자를 지정하는 LONG을 가리킵니다.
DOCUMENTEVENT_STARTDOCPRE 또는 DOCUMENTEVENT_STARTDOC
pvIn은 StartDoc 호출자가 제공하는 DOCINFO 구조체에 대한 포인터주소를 포함합니다.
DOCUMENTEVENT_STARTPAGE
사용되지 않습니다.

cbOut

의미
IDOCUMENTEVENT_QUERYFILTER pvOut에 의한 버퍼 포인터의 크기(바이트)입니다.
DOCUMENTEVENT_ESCAPE ExtEscape대한 cbOutput 매개 변수로 사용되는 값입니다.
다른 모든 값의 경우 iEsc 는 사용되지 않습니다.

pvOut [out]

버퍼에 대한 포인터입니다. 버퍼의 내용은 다음 표와 같이 iEsc제공된 값에 따라 달라집니다.

상수 pvOut 콘텐츠
DOCUMENTEVENT_CREATEDCPRE
드라이버 제공 DEVMODE 구조체에 대한 포인터로, GDI는 CreateDC 호출자가 제공하는 구조체 대신 사용합니다. (If NULL, GDI는 호출자 제공 구조를 사용합니다.)
DOCUMENTEVENT_ESCAPE
ExtEscape의 lpszOutData 매개 변수로 사용되는 버퍼에 대한 포인터입니다.
DOCUMENTEVENT_QUERYFILTER
Windows 드라이버 개발 키트에 설명된 DOCEVENT_FILTER 구조를 포함하는 버퍼에 대한 포인터입니다.
DOCUMENTEVENT_RESETDCPRE
ResetDC 호출자가 제공한 구조 대신 GDI에서 사용하는 드라이버 제공 DEVMODE 구조체에 대한 포인터입니다. (If NULL, GDI는 호출자 제공 구조를 사용합니다.)

반환 값

함수의 반환 값은 iEsc에 제공된 이스케이프에 따라 달라집니다. 일부 이스케이프 코드의 경우 반환 값이 사용되지 않습니다(아래 참조). 함수가 반환 값을 제공하는 경우 다음 중 하나여야 합니다.

Return Value 의미
DOCUMENTEVENT_FAILURE 드라이버는 iEsc식별된 이스케이프 코드를 지원하지만 오류가 발생했습니다.
DOCUMENTEVENT_SUCCESS 드라이버가 iEsc로 식별된 이스케이프 코드를 성공적으로 처리했습니다.
DOCUMENTEVENT_UNSUPPORTED 드라이버는 iEsc로 식별된 이스케이프 코드를 지원하지 않습니다.

다음 목록은 반환 값이 필요한 이스케이프 코드와 반환하지 않는 이스케이프 코드를 나타내며 DOCUMENTEVENT_SUCCESS, DOCUMENTEVENT_FAILURE 및 DOCUMENTEVENT_UNSUPPORTED 반환 코드의 의미를 설명합니다.

Return Value 의미
DOCUMENTEVENT_ABORTDOC 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_CREATEDCPOST 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_CREATEDCPRE DOCUMENTEVENT_FAILURE - GDI는 디바이스 컨텍스트 또는 정보 컨텍스트를 만들지 않으며 CreateDC 또는 CreateIC에 대해 반환 값 0을 제공합니다.
DOCUMENTEVENT_DELETEDC 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_ENDDOCPOST 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_ENDDOCPRE 또는 DOCUMENTEVENT_ENDDOC 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_ENDPAGE 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_ESCAPE 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_QUERYFILTER 설명 부분을 참조하세요.
DOCUMENTEVENT_RESETDCPOST 반환 값은 사용되지 않으며 읽을 수 없습니다.
DOCUMENTEVENT_RESETDCPRE DOCUMENTEVENT_FAILURE - GDI는 디바이스 컨텍스트를 다시 설정하지 않으며 ResetDC에 대해 0의 반환 값을 제공합니다.
DOCUMENTEVENT_STARTDOCPOST DOCUMENTEVENT_FAILURE - GDI는 AbortDoc를 호출하여 문서를 중지한 다음 StartDoc에 대한 SP_ERROR 반환 값을 제공합니다.
DOCUMENTEVENT_STARTDOCPRE 또는 DOCUMENTEVENT_STARTDOC DOCUMENTEVENT_FAILURE - GDI는 문서를 시작하지 않으며 StartDoc에 대한 SP_ERROR 반환 값을 제공합니다.
DOCUMENTEVENT_STARTPAGE DOCUMENTEVENT_FAILURE - GDI는 페이지를 시작하지 않으며 StartPage에 대한 SP_ERROR 반환 값을 제공합니다.

설명

DOCUMENTEVENT_QUERYFILTER iEsc 값의 경우 스풀러는 드라이버가 windows 드라이버 개발 키트에 설명된 DOCEVENT_FILTER 구조체의 특정 멤버를 수정했는지 여부에 따라 두 가지 방법으로 DocumentEvent에서 반환된 DOCUMENTEVENT_SUCCESS 값을 해석할 수 있습니다. (pvOut 매개 변수는 이 구조를 가리킵니다.) 스풀러는 이 형식의 구조체에 대한 메모리를 할당할 때 이 구조체의 두 멤버인 cElementsReturnedcElementsNeeded를 알려진 값으로 초기화합니다. DocumentEvent가 반환된 후 스풀러는 이러한 멤버의 값이 변경되었는지 여부를 확인하고 해당 정보를 사용하여 DocumentEvent 반환 값을 해석합니다. 다음 표에서는 이 상황을 요약합니다.

Return Value cElementsReturned 및 cElementsNeeded의 상태 의미
DOCUMENTEVENT_SUCCESS
드라이버는 두 멤버를 변경하지 않았습니다.
스풀러는 이 반환 값을 DOCUMENTEVENT_UNSUPPORTED 동일한 값으로 해석합니다. 스풀러는 드라이버에서 이벤트 필터를 검색할 수 없으므로 모든 이벤트에 대해 DocumentEvent를 계속 호출합니다.
DOCUMENTEVENT_SUCCESS
드라이버는 하나 또는 두 멤버에게 썼다.
스풀러는 해석 없이 이 반환 값을 허용합니다. 드라이버가 cElementsNeededcElementsRe하나에만 쓴 경우 스풀러는 변경되지 않은 멤버의 값이 0인 것으로 간주합니다.
스풀러는 DOCEVENT_FILTER aDocEventCall 멤버(Windows 드라이버 개발 키트에 설명되어 있음)에 나열된 모든 이벤트를 필터링합니다.
DOCUMENTEVENT_UNSUPPORTED
해당 없음
드라이버는 DOCUMENTEVENT_QUERYFILTER 지원하지 않습니다.
스풀러는 드라이버에서 이벤트 필터를 검색할 수 없으므로 모든 이벤트에 대해 DocumentEvent를 계속 호출합니다.
DOCUMENTEVENT_FAILURE
해당 없음
드라이버는 DOCUMENTEVENT_QUERYFILTER 지원하지만 내부 오류가 발생했습니다.
스풀러는 드라이버에서 이벤트 필터를 검색할 수 없으므로 모든 이벤트에 대해 DocumentEvent를 계속 호출합니다.

iEsc 매개 변수에 제공된 이스케이프 코드가 DOCUMENTEVENT_CREATEDCPRE 경우 다음 규칙이 적용됩니다.

참고 항목

64비트 버전의 Windows에서 32비트 애플리케이션을 실행하는 경우 다음 제한 사항이 적용됩니다. DocumentEvent에서 호출해야 하는 유일한 GDI 함수는 ExtEscape이며 프라이빗 이스케이프만 사용해야 합니다. 다른 GDI 함수에 대한 DocumentEvent 호출은 정의되지 않은 동작을 생성할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2008 [데스크톱 앱만 해당]
헤더
Winspool.h(Windows.h 포함)
유니코드 및 ANSI 이름
DocumentEventW (유니코드) 및 DocumentEventA (ANSI)

참고 항목