DrvPrinterEvent 함수(winddiui.h)

프린터 인터페이스 DLL의 DrvPrinterEvent 함수는 프린터 드라이버의 작업이 필요할 수 있는 프린터 관련 이벤트를 처리할 때 인쇄 스풀러에서 호출됩니다.

구문

BOOL DrvPrinterEvent(
  [in] LPWSTR pPrinterName,
       int    DriverEvent,
       DWORD  Flags,
       LPARAM lParam
);

매개 변수

[in] pPrinterName

NULL로 종료된 프린터 이름 문자열에 대한 호출자 제공 포인터입니다. 문자열 형식은 원격 프린터를 지정하는 MachinePrinterName\이거나 로컬 프린터를 지정하는 PrinterName일 수 있습니다\.

DriverEvent

이벤트를 식별하는 호출자 제공 이벤트 코드입니다. 다음 이벤트 코드가 정의됩니다.

이벤트 코드 정의
PRINTER_EVENT_ADD_CONNECTION 스풀러는 클라이언트 사용자가 이전에 만든 원격 프린터에 연결할 수 있도록 하는 AddPrinterConnection 함수(Microsoft Windows SDK 설명서에 설명됨)에 대한 호출 처리를 막 완료했습니다.
PRINTER_EVENT_ATTRIBUTES_CHANGED 프린터의 특성 비트가 변경되었습니다. SetPrinter 함수에 대한 애플리케이션의 호출(Windows SDK 설명서에 설명됨)에 대한 응답으로 스풀러는 프린터 드라이버의 DrvPrinterEvent 함수를 호출하여 호출에 이벤트 코드를 전달합니다. 이 이벤트 코드를 사용하는 경우 lParam 매개 변수는 이전 특성과 새 특성을 설명하는 PRINTER_EVENT_ATTRIBUTES_INFO 구조를 가리킵니다.
PRINTER_EVENT_CACHE_DELETE 스풀러가 클라이언트의 파일 캐시를 삭제합니다.
PRINTER_EVENT_CACHE_REFRESH 스풀러는 클라이언트의 캐시된 파일을 업데이트하고 있습니다.
PRINTER_EVENT_CONFIGURATION_CHANGE 예약되어 있습니다.
PRINTER_EVENT_CONFIGURATION_UPDATE 프린터 구성이 변경되었습니다. 이 이벤트 코드를 사용하는 경우 lParam 매개 변수는 Bidi 알림 스키마에 따라 형식이 지정된 알림이 포함된 유니코드 문자열을 가리킵니다.
PRINTER_EVENT_DELETE_CONNECTION 스풀러는 클라이언트 사용자가 프린터 연결을 제거할 수 있도록 하는 DeletePrinterConnection 함수(Windows SDK 설명서에 설명되어 있음)에 대한 호출 처리를 막 완료했습니다.
PRINTER_EVENT_DELETE 스풀러는 관리자가 프린터 인스턴스를 삭제할 수 있도록 하는 DeletePrinter 함수(Windows SDK 설명서에 설명됨)에 대한 호출 처리를 막 완료했습니다.
PRINTER_EVENT_INITIALIZE 스풀러는 관리자가 서버에서 프린터를 사용할 수 있도록 하는 AddPrinter 함수 또는 관리자가 프린터 상태를 수정할 수 있는 SetPrinter 함수에 대한 호출 처리를 막 마쳤습니다. AddPrinterSetPrinter는 Windows SDK 설명서에 설명되어 있습니다.

클라이언트 쪽 렌더링 연결에서 클라이언트 컴퓨터는 GUID 프린터를 추가했습니다.

PRINTER_EVENT_INITIALIZE 이벤트는 Windows Vista 및 이전 릴리스에서 DrvPrinterEvent 호출에 대한 NULL lParam 매개 변수 값을 지정합니다. Windows 7 이상 릴리스의 경우 lParam 매개 변수는 사용자 토큰 핸들입니다. 인쇄 드라이버는 반환된 토큰 핸들을 사용하여 사용자 데이터를 쿼리하거나 사용자를 가장할 수 있습니다.

Flags

다음과 같이 정의된 호출자 제공 비트 플래그:

정의
PRINTER_EVENT_FLAG_NO_UI 설정된 경우 함수는 사용자 인터페이스를 표시 해서는 안됩니다 . 인쇄 프로세서, 인쇄 모니터 또는 프린터 드라이버를 설치하는 동안 사용자 인터페이스가 허용되는 유일한 방법은 VendorSetup 지시문을 사용하는 것입니다. 자세한 내용은 프린터 INF 파일 항목사용자 지정된 프린터 설정 작업을 참조하세요.
중요 : VendorSetup 은 이제 더 이상 사용되지 않으며 개발하는 v3 또는 v4 드라이버에서 사용해서는 안 됩니다. VendorSetup에 대한 이 정보는 참조 전용 또는 이 INF 지시문을 이미 사용하는 기존 v3 드라이버의 유지 관리를 위해 제공됩니다.

lParam

DriverEvent 매개 변수를 PRINTER_EVENT_ATTRIBUTES_CHANGED 설정하지 않는 한 사용되지 않습니다. 이 경우 lParam 은 PRINTER_EVENT_ATTRIBUTES_INFO 구조체의 주소를 포함합니다. ( DriverEvent 매개 변수에 대한 이전 설명을 참조하세요.) DriverEvent 매개 변수의 다른 모든 값에 대해 lParam 매개 변수는 NULL입니다.

반환 값

작업이 성공하면 함수는 TRUE를 반환해야 합니다. 그렇지 않으면 FALSE를 반환해야 합니다. 그러나 현재 함수의 반환 값을 확인하는 유일한 시간은 AddPrinter 함수를 처리하는 동안 스풀러가 DrvPrinterEvent를 호출하고 DriverEvent가 PRINTER_EVENT_INITIALIZE 설정된 경우입니다. 이 경우 DrvPrinterEventFALSE 를 반환하는 경우 스풀러는 프린터를 만들지 않고 대신 AddPrinter 가 실패합니다.

설명

모든 프린터 인터페이스 DLLDrvPrinterEvent 함수를 제공해야 하며 함수는 PRINTER_EVENT_INITIALIZE 이벤트 코드를 지원해야 합니다. 다른 모든 이벤트 코드에 대한 지원은 선택 사항입니다.

PRINTER_EVENT_INITIALIZE 이벤트를 처리할 때 저장된 레지스트리 설정은 SetPrinterData를 호출하여 HKEY_LOCAL_MACHINE 키 아래에 저장되어야 합니다. PRINTER_EVENT_INITIALIZE 및 PRINTER_EVENT_DELETE 이벤트 코드의 경우 스풀러는 호출자가 관리자 권한을 가지고 있음을 확인하고 호출자를 가장하는 동안 DrvPrinterEvent 를 호출합니다.

반면, PRINTER_EVENT_ADD_CONNECTION 이벤트를 처리할 때 레지스트리에 설정을 저장해야 하는 경우 프린터 인터페이스 DLL은 사용자 단위로 저장되도록 HKEY_CURRENT_USER 키 아래에 설정을 작성해야 합니다. 그런 다음 로밍 프로필이 있는 사용자가 다른 시스템에 로그온하는 경우 연결이 사용자를 따릅니다. DrvPrinterEvent 함수는 사용자가 처음 연결을 할 때만 호출되며, 이후에 로밍 프로필을 사용하여 다른 시스템에 로그온할 때는 호출되지 않습니다.

PRINTER_EVENT_ADD_CONNECTION 및 PRINTER_EVENT_DELETE_CONNECTION 이벤트 코드의 경우 DrvPrinterEvent 함수의 실행 컨텍스트는 호출 애플리케이션(일반적으로 인쇄 폴더)이며 함수는 사용자 인터페이스를 표시할 수 있습니다. 다른 모든 이벤트 코드의 경우 실행 컨텍스트는 인쇄 스풀러이며 사용자 인터페이스를 표시할 수 없습니다.

연결을 만들 때 사용자 인터페이스를 표시할 수 있는 드라이버의 예로는 FAX 드라이버가 있습니다. 이 드라이버는 사용자에게 사용자의 이름 및 전화 번호(FAX 보낸 사람)를 묻는 메시지를 표시하고 연결이 삭제될 때까지 정보를 저장할 수 있습니다.

클라이언트 캐시에 저장될 수 있는 파일 형식의 예는 레지스트리에 쓸 정보가 너무 많은 큰 글꼴 메트릭 파일입니다. DrvPrinterEvent 함수의 이벤트 코드가 PRINTER_EVENT_CACHE_REFRESH 프린터 인터페이스 DLL은 캐시가 최신 상태인지 확인하기 위해 서버에서 파일을 다시 로드할 수 있습니다.

요구 사항

   
대상 플랫폼 바탕 화면
헤더 winddiui.h(Winddiui.h 포함)