IPrintOemUI2::D cumentEvent 메서드(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 pvInResetDC 호출자가 제공하는 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로 식별된 이스케이프 코드를 지원하지 않습니다.

반환 값

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

반환 코드 Description
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