IPrintOemUI2::D ocumentEvent 메서드(prcomoem.h)

IPrintOemUI2::DocumentEvent 메서드를 사용하면 UI 플러그 인이 핵심 드라이버 UI 모듈의 DrvDocumentEvent DDI 기본 구현을 대체할 수 있습니다.

구문

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

매개 변수

hPrinter

호출자가 제공한 프린터 핸들입니다.

hdc

CreateDC 호출에 의해 생성된 호출자 제공 디바이스 컨텍스트 핸들입니다. iEsc가 DOCUMENTEVENT_CREATEDCPRE 경우 0입니다.

iEsc

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

이스케이프 코드 의미
DOCUMENTEVENT_ABORTDOC GDI는 AbortDoc 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_CREATEDCPOST GDI는 CreateDC 또는 CreateIC 함수에 대한 호출을 방금 처리했습니다.

iEsc가 DOCUMENTEVENT_CREATEDCPRE 설정된 DrvDocumentEvent에 대한 이전 호출이 없는 한 이 이스케이프 코드를 사용하면 안 됩니다.

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 이벤트를 전달하는 DrvDocumentEvent 호출 직전에 발생합니다.
DOCUMENTEVENT_RESETDCPOST GDI가 ResetDC 함수에 대한 호출을 방금 처리했습니다.

iEsc가 DOCUMENTEVENT_RESETDCPRE 설정된 DrvDocumentEvent에 대한 이전 호출이 없는 한 이 이스케이프 코드를 사용하면 안 됩니다.

DOCUMENTEVENT_RESETDCPRE GDI는 ResetDC 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_STARTDOCPOST GDI가 StartDoc 함수에 대한 호출을 방금 처리했습니다.
DOCUMENTEVENT_STARTDOCPRE

또는

DOCUMENTEVENT_STARTDOC

GDI는 StartDoc 함수에 대한 호출을 처리하려고 합니다.
DOCUMENTEVENT_STARTPAGE GDI는 StartPage 함수에 대한 호출을 처리하려고 합니다.

cbIn

pvIn이 가리키는 버퍼의 호출자 제공 크기(바이트)입니다.

pvIn

호출자 제공 포인터는 다음과 같이 iEsc에 제공된 값에 따라 달라집니다.

iEsc 상수 pvIn 내용을
DOCUMENTEVENT_ABORTDOC 사용되지 않습니다.
DOCUMENTEVENT_CREATEDCPOST pvIn에는 iEsc 매개 변수가 DOCUMENTEVENT_CREATEDCPRE 설정된 이 함수에 대한 이전 호출에서 pvOut 매개 변수에 지정된 DEVMODEW 구조에 대한 포인터의 주소가 포함되어 있습니다.
DOCUMENTEVENT_CREATEDCPRE pvIn은 DOCEVENT_CREATEDCPRE 구조를 가리킵니다.
DOCUMENTEVENT_DELETEDC 사용되지 않습니다.
DOCUMENTEVENT_ENDDOCPOST 사용되지 않습니다.
DOCUMENTEVENT_ENDDOCPRE

또는

DOCUMENTEVENT_ENDDOC

사용되지 않습니다.
DOCUMENTEVENT_ENDPAGE 사용되지 않습니다.
DOCUMENTEVENT_ESCAPE pvIn은 DOCEVENT_ESCAPE 구조를 가리킵니다.
DOCUMENTEVENT_QUERYFILTER DOCUMENTEVENT_CREATEDCPRE 경우와 동일합니다.
DOCUMENTEVENT_RESETDCPOST pvIn에는 iEsc 매개 변수가 DOCUMENTEVENT_RESETDCPRE 설정된 이 함수에 대한 이전 호출에서 pvOut 매개 변수에 지정된 DEVMODEW 구조체에 대한 포인터의 주소가 포함되어 있습니다.
DOCUMENTEVENT_RESETDCPRE pvIn에는 ResetDC 호출자가 제공하는 DEVMODEW 구조체에 대한 포인터의 주소가 포함되어 있습니다(Microsoft Windows SDK 설명서에 설명됨).
DOCUMENTEVENT_STARTDOCPOST pvIn은 StartDoc에서 반환된 인쇄 작업 식별자를 지정하는 LONG을 가리킵니다(Windows SDK 설명서에 설명됨).
DOCUMENTEVENT_STARTDOCPRE

또는

DOCUMENTEVENT_STARTDOC

pvInStartDoc 호출자가 제공하는 DOCINFO 구조체에 대한 포인터의 주소를 포함합니다(둘 다 Windows SDK 설명서에 설명되어 있습니다).
DOCUMENTEVENT_STARTPAGE 사용되지 않습니다.

cbOut

iEsc가 DOCUMENTEVENT_ESCAPE 경우:

ExtEscape에 대한 cbOutput 매개 변수로 사용되는 함수 제공 값입니다.

iEsc가 DOCUMENTEVENT_QUERYFILTER 경우:

pvOut에 의한 버퍼 포인터의 호출자 제공 크기(바이트)입니다.

다른 모든 iEsc 값의 경우:

사용되지 않습니다.

pvOut

다음과 같이 iEsc에 제공된 값에 따라 달라지는 출력 버퍼에 대한 함수 제공 포인터입니다. CreateDC, ExtEscapeResetDC는 Windows SDK 설명서에 설명되어 있습니다.

iEsc 상수 pvOut 내용을
DOCUMENTEVENT_CREATEDCPRE CreateDC 호출자가 제공하는 구조 대신 GDI에서 사용하는 드라이버 제공 DEVMODEW 구조체에 대한 포인터입니다. ( NULL인 경우 GDI는 호출자가 제공한 구조를 사용합니다.)
DOCUMENTEVENT_ESCAPE ExtEscape에 대한 lpszOutData 매개 변수로 사용되는 버퍼 포인터입니다.
DOCUMENTEVENT_QUERYFILTER DOCEVENT_FILTER 구조체를 포함하는 버퍼에 대한 호출자 제공 포인터입니다.
DOCUMENTEVENT_RESETDCPRE 드라이버 제공 DEVMODEW 구조에 대한 포인터로, GDI는 ResetDC 호출자가 제공하는 구조 대신 사용합니다. ( NULL인 경우 GDI는 호출자가 제공한 구조를 사용합니다.)
기타 모든 iEsc 사용되지 않습니다.

piResult

다음 값 중 하나를 수신하는 메모리 위치에 대한 포인터입니다.

반환 값 정의
DOCUMENTEVENT_FAILURE 드라이버는 iEsc로 식별된 이스케이프 코드를 지원하지만 오류가 발생했습니다.
DOCUMENTEVENT_SUCCESS 드라이버가 iEsc로 식별된 이스케이프 코드를 성공적으로 처리했습니다. 자세한 내용은 설명 섹션을 참조하세요.
DOCUMENTEVENT_UNSUPPORTED 드라이버는 iEsc로 식별된 이스케이프 코드를 지원하지 않습니다.

반환 값

이 메서드는 다음 값 중 하나를 반환해야 합니다. 자세한 내용은 설명 부분을 참조하세요.

반환 코드 설명
S_OK
UI 플러그 인은 이 메서드를 구현합니다.
E_NOTIMPL
UI 플러그 인은 이 메서드를 구현하지 않습니다.

설명

사용자 인터페이스 플러그 인의 IPrintOemUI2::DocumentEvent 메서드는 사용자 모드 프린터 인터페이스 DLL에서 내보낸 DrvDocumentEvent DDI와 동일한 유형의 작업을 수행합니다. 문서 이벤트 및 처리 방법에 대한 자세한 내용은 DrvDocumentEvent DDI에 대한 설명을 참조하세요.

사용자 인터페이스 플러그 인을 제공하는 경우 프린터 드라이버의 DrvDocumentEvent DDI가 메서드를 호출합니다 IPrintOemUI2::DocumentEvent . DrvDocumentEvent DDI는 지정된 이벤트에 대해 자체 처리를 수행한 다음 메서드를 IPrintOemUI2::DocumentEvent 호출하여 이벤트의 추가 처리를 처리합니다.

이 메서드가 DOCUMENTEVENT_QUERYFILTER iEsc 매개 변수의 값으로 호출되고 *piResult == DOCUMENTEVENT_SUCCESS 사용하여 반환되는 경우 스풀러는 DOCEVENT_FILTER 구조체의 특정 멤버가 값을 변경했는지 여부에 따라 두 가지 방법 중 하나에서 이 값을 해석할 수 있습니다. 자세한 내용은 DrvDocumentEvent에 대한 설명 섹션을 참조하세요.

DOCUMENTEVENT_QUERYFILTER 이벤트가 발생하면 핵심 드라이버는 플러그 인을 설치한 순서대로 호출하고, 그 중 하나가 S_OK 반환하거나, 모든 플러그 인이 호출되고 S_OK 반환되지 않을 때까지 플러그 인을 호출합니다. 이러한 방식으로 최대 하나의 플러그 인이 DOCUMENTEVENT_QUERYFILTER 이벤트를 처리할 수 있으며 지정한 필터가 플러그 인 체인의 모든 플러그 인에 적용됩니다.

IPrintOemUI2 인터페이스를 구현하지만 메서드를 지원할 IPrintOemUI2::DocumentEvent 필요가 없는 플러그 인 작성기의 경우 이 메서드는 iEsc의 모든 값에 대한 E_NOTIMPL 반환해야 합니다. 이 메서드를 구현해야 하는 경우 iEsc의 모든 값에 대한 S_OK 반환해야 합니다. 이는 핵심 드라이버에 이 메서드가 관련 이벤트를 처리했음을 나타냅니다. 핵심 드라이버는 이 메서드가 piResult 에 배치하는 값을 DrvDocumentEvent DDI의 반환 값으로 사용합니다.

요구 사항

   
대상 플랫폼 데스크톱
헤더 prcomoem.h(Prcomoem.h 포함)

참고 항목

DOCEVENT_CREATEDCPRE

DOCEVENT_ESCAPE

DOCEVENT_FILTER

DrvDocumentEvent

IPrintOemUI2