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
처리할 이벤트를 식별하는 이스케이프 코드입니다. 이 매개 변수는 다음 정수 상수 중 하나일 수 있습니다.
상수 | 이벤트 |
---|---|
|
GDI는 AbortDoc 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 CreateDC 또는 CreateIC 함수에 대한 호출을 방금 처리했습니다. iEsc가 DOCUMENTEVENT_CREATEDCPRE 설정된 DocumentEvent 에 대한 이전 호출이 없는 한 이 이스케이프 코드를 사용하면 안 됩니다. |
|
GDI는 CreateDC 또는 CreateIC 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 DeleteDC 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 EndDoc 함수에 대한 호출을 방금 처리했습니다. |
|
GDI는 EndDoc 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 EndPage 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 ExtEscape 함수에 대한 호출을 처리하려고 합니다. |
|
DOCUMENTEVENT_QUERYFILTER 이벤트는 스풀러가 드라이버가 응답할 DOCUMENTEVENT_ XXX 이벤트 목록을 드라이버에 쿼리할 수 있는 기회를 나타냅니다. 이 이벤트는 DOCUMENTEVENT_CREATEDCPRE 이벤트를 전달하는 DocumentEvent 호출 직전에 발생합니다. |
|
GDI는 ResetDC 함수에 대한 호출을 방금 처리했습니다. iEsc가 DOCUMENTEVENT_RESETDCPRE 설정된 DocumentEvent 에 대한 이전 호출이 없는 한 이 이스케이프 코드를 사용하면 안 됩니다. |
|
GDI는 ResetDC 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 StartDoc 함수에 대한 호출을 방금 처리했습니다. |
|
GDI는 StartDoc 함수에 대한 호출을 처리하려고 합니다. |
|
GDI는 StartPage 함수에 대한 호출을 처리하려고 합니다. |
cbIn
pvIn에서 가리키는 버퍼의 크기(바이트)입니다.
pvIn [in]
버퍼에 대한 포인터입니다. 버퍼에 포함된 내용은 다음 표와 같이 iEsc 값에 따라 달라집니다.
상수 | pvin 콘텐츠 |
---|---|
|
사용되지 않습니다. |
|
pvIn은 iEsc 매개 변수가 DOCUMENTEVENT_CREATEDCPRE 설정된 이 함수에 대한 이전 호출에서 pvOut 매개 변수에 지정된 DEVMODE 구조체에 대한 포인터의 주소를 포함합니다. |
|
pvIn은 Windows 드라이버 개발 키트에 설명된 DOCEVENT_CREATEDCPRE 구조를 가리킵니다. |
|
사용되지 않습니다. |
|
사용되지 않습니다. |
|
사용되지 않습니다. |
|
사용되지 않습니다. |
|
pvIn은 Windows 드라이버 개발 키트에 설명된 DOCEVENT_ESCAPE 구조를 가리킵니다. |
|
DOCUMENTEVENT_CREATEDCPRE 경우와 동일합니다. |
|
pvIn은 iEsc 매개 변수가 DOCUMENTEVENT_RESETDCPRE 설정된 이 함수에 대한 이전 호출에서 pvOut 매개 변수에 지정된 DEVMODE 구조체에 대한 포인터의 주소를 포함합니다. |
|
pvIn에는 ResetDC 호출자가 제공한 DEVMODE 구조체에 대한 포인터의 주소가 포함됩니다. |
|
pvIn은 StartDoc에서 반환된 인쇄 작업 식별자를 지정하는 LONG을 가리킵니다. |
|
pvIn은 StartDoc 호출자가 제공하는 DOCINFO 구조체에 대한 포인터의 주소를 포함합니다. |
|
사용되지 않습니다. |
cbOut
값 | 의미 |
---|---|
IDOCUMENTEVENT_QUERYFILTER | pvOut에 의한 버퍼 포인터의 크기(바이트)입니다. |
DOCUMENTEVENT_ESCAPE | ExtEscape에 대한 cbOutput 매개 변수로 사용되는 값입니다. |
다른 모든 값의 경우 | iEsc 는 사용되지 않습니다. |
pvOut [out]
버퍼에 대한 포인터입니다. 버퍼의 내용은 다음 표와 같이 iEsc에 제공된 값에 따라 달라집니다.
상수 | pvOut 콘텐츠 |
---|---|
|
드라이버 제공 DEVMODE 구조체에 대한 포인터로, GDI는 CreateDC 호출자가 제공하는 구조체 대신 사용합니다. (If NULL, GDI는 호출자 제공 구조를 사용합니다.) |
|
ExtEscape의 lpszOutData 매개 변수로 사용되는 버퍼에 대한 포인터입니다. |
|
Windows 드라이버 개발 키트에 설명된 DOCEVENT_FILTER 구조를 포함하는 버퍼에 대한 포인터입니다. |
|
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 매개 변수는 이 구조를 가리킵니다.) 스풀러는 이 형식의 구조체에 대한 메모리를 할당할 때 이 구조체의 두 멤버인 cElementsReturned 및 cElementsNeeded를 알려진 값으로 초기화합니다. DocumentEvent가 반환된 후 스풀러는 이러한 멤버의 값이 변경되었는지 여부를 확인하고 해당 정보를 사용하여 DocumentEvent 반환 값을 해석합니다. 다음 표에서는 이 상황을 요약합니다.
Return Value | cElementsReturned 및 cElementsNeeded의 상태 | 의미 |
---|---|---|
DOCUMENTEVENT_SUCCESS |
드라이버는 두 멤버를 변경하지 않았습니다. |
스풀러는 이 반환 값을 DOCUMENTEVENT_UNSUPPORTED 동일한 값으로 해석합니다. 스풀러는 드라이버에서 이벤트 필터를 검색할 수 없으므로 모든 이벤트에 대해 DocumentEvent를 계속 호출합니다. |
DOCUMENTEVENT_SUCCESS |
드라이버는 하나 또는 두 멤버에게 썼다. |
스풀러는 해석 없이 이 반환 값을 허용합니다. 드라이버가 cElementsNeeded 및 cElementsRe 중 하나에만 쓴 경우 스풀러는 변경되지 않은 멤버의 값이 0인 것으로 간주합니다. 스풀러는 DOCEVENT_FILTER aDocEventCall 멤버(Windows 드라이버 개발 키트에 설명되어 있음)에 나열된 모든 이벤트를 필터링합니다. |
DOCUMENTEVENT_UNSUPPORTED |
해당 없음 |
드라이버는 DOCUMENTEVENT_QUERYFILTER 지원하지 않습니다. 스풀러는 드라이버에서 이벤트 필터를 검색할 수 없으므로 모든 이벤트에 대해 DocumentEvent를 계속 호출합니다. |
DOCUMENTEVENT_FAILURE |
해당 없음 |
드라이버는 DOCUMENTEVENT_QUERYFILTER 지원하지만 내부 오류가 발생했습니다. 스풀러는 드라이버에서 이벤트 필터를 검색할 수 없으므로 모든 이벤트에 대해 DocumentEvent를 계속 호출합니다. |
iEsc 매개 변수에 제공된 이스케이프 코드가 DOCUMENTEVENT_CREATEDCPRE 경우 다음 규칙이 적용됩니다.
- 작업이 스풀링 없이 프린터로 직접 전송되는 경우 pvIn-pszDevice>는 프린터 이름을 가리킵니다. (자세한 내용은 다음의 DOCEVENT_CREATEDCPRE 구조에 대한 설명서를 참조하세요.Windows 드라이버 개발 키트.)
- 작업이 스풀되는 경우 pvIn-pszDevice>는 프린터 포트 이름을 가리킵니다.
참고 항목
64비트 버전의 Windows에서 32비트 애플리케이션을 실행하는 경우 다음 제한 사항이 적용됩니다. DocumentEvent에서 호출해야 하는 유일한 GDI 함수는 ExtEscape이며 프라이빗 이스케이프만 사용해야 합니다. 다른 GDI 함수에 대한 DocumentEvent 호출은 정의되지 않은 동작을 생성할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 |
Windows Server 2008 [데스크톱 앱만 해당] |
헤더 |
|
유니코드 및 ANSI 이름 |
DocumentEventW (유니코드) 및 DocumentEventA (ANSI) |