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 | pvIn은 ResetDC 호출자가 제공하는 DEVMODEW 구조체에 대한 포인터의 주소를 포함합니다(Microsoft Windows SDK 설명서에 설명되어 있습니다). |
DOCUMENTEVENT_STARTDOCPOST | pvIn은StartDoc 에서 반환된 인쇄 작업 식별자를 지정하는 LONG을 가리킵니다(Windows SDK 설명서에 설명됨). |
DOCUMENTEVENT_STARTDOCPRE 또는 DOCUMENTEVENT_STARTDOC |
pvIn 은 StartDoc 호출자가 제공하는 DOCINFO 구조체에 대한 포인터의 주소를 포함합니다(둘 다 Windows SDK 설명서에 설명됨). |
DOCUMENTEVENT_STARTPAGE | 사용되지 않습니다. |
cbOut
iEsc가 DOCUMENTEVENT_ESCAPE 경우:
ExtEscape에 대한 cbOutput 매개 변수로 사용되는 함수 제공 값입니다.
iEsc가 DOCUMENTEVENT_QUERYFILTER 경우:
pvOut에 의해 에 대한 버퍼 포인터의 호출자 제공 크기(바이트)입니다.
다른 모든 iEsc 값의 경우:
사용되지 않습니다.
pvOut
출력 버퍼에 대한 함수 제공 포인터이며, 의 사용은 다음과 같이 iEsc에 제공된 값에 따라 달라집니다. CreateDC, ExtEscape 및 ResetDC 는 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 |
---|---|
|
UI 플러그 인은 이 메서드를 구현합니다. |
|
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 포함) |