다음을 통해 공유


FindFirstPrinterChangeNotification 함수

FindFirstPrinterChangeNotification 함수는 변경 알림 개체를 만들고 개체에 대한 핸들을 반환합니다. 그런 다음, 대기 함수 중 하나를 호출할 때 이 핸들을 사용하여 프린터 또는 인쇄 서버의 변경 내용을 모니터링할 수 있습니다.

FindFirstPrinterChangeNotification 호출은 모니터링할 변경의 유형을 지정합니다. 변경 내용을 모니터링할 조건 집합, 모니터링할 프린터 정보 필드 집합 또는 둘 다를 지정할 수 있습니다.

지정된 프린터 또는 인쇄 서버에서 지정된 변경 내용 중 하나가 발생하면 변경 알림 핸들에 대한 대기 작업이 성공합니다. 그런 다음 FindNextPrinterChangeNotification 함수를 호출하여 변경 내용에 대한 정보를 검색하고 다음 대기 작업에서 사용할 변경 알림 개체를 다시 설정합니다.

구문

HANDLE FindFirstPrinterChangeNotification(
  _In_     HANDLE hPrinter,
           DWORD  fdwFilter,
           DWORD  fdwOptions,
  _In_opt_ LPVOID pPrinterNotifyOptions
);

매개 변수

hPrinter [in]

모니터링하려는 프린터 또는 인쇄 서버에 대한 핸들입니다. OpenPrinter 또는 AddPrinter 함수를 사용하여 프린터 핸들을 검색합니다.

fdwFilter

변경 알림 개체가 신호 상태가 되는 조건입니다. 지정된 조건 중 하나 이상이 충족되면 변경 알림이 발생합니다. pPrinterNotifyOptionsNULL이 아닌 경우 fdwFilter 매개 변수는 0일 수 있습니다.

이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.

의미
PRINTER_CHANGE_FORM
양식의 변경 내용을 알립니다. 이 일반 플래그 또는 다음 특정 플래그 중 하나 이상을 설정할 수 있습니다.
PRINTER_CHANGE_ADD_FORM
PRINTER_CHANGE_SET_FORM
PRINTER_CHANGE_DELETE_FORM
PRINTER_CHANGE_JOB
작업에 대한 변경 내용을 알립니다. 이 일반 플래그 또는 다음 특정 플래그 중 하나 이상을 설정할 수 있습니다.
PRINTER_CHANGE_ADD_JOB
PRINTER_CHANGE_SET_JOB
PRINTER_CHANGE_DELETE_JOB
PRINTER_CHANGE_WRITE_JOB
PRINTER_CHANGE_PORT
포트에 대한 변경 내용을 알립니다. 이 일반 플래그 또는 다음 특정 플래그 중 하나 이상을 설정할 수 있습니다.
PRINTER_CHANGE_ADD_PORT
PRINTER_CHANGE_CONFIGURE_PORT
PRINTER_CHANGE_DELETE_PORT
PRINTER_CHANGE_PRINT_PROCESSOR
인쇄 프로세서에 대한 변경 내용을 알립니다. 이 일반 플래그 또는 다음 특정 플래그 중 하나 이상을 설정할 수 있습니다.
PRINTER_CHANGE_ADD_PRINT_PROCESSOR
PRINTER_CHANGE_DELETE_PRINT_PROCESSOR
PRINTER_CHANGE_PRINTER
프린터 변경 내용을 알립니다. 이 일반 플래그 또는 다음 특정 플래그 중 하나 이상을 설정할 수 있습니다.
PRINTER_CHANGE_ADD_PRINTER
PRINTER_CHANGE_SET_PRINTER
PRINTER_CHANGE_DELETE_PRINTER
PRINTER_CHANGE_FAILED_CONNECTION_PRINTER
PRINTER_CHANGE_PRINTER_DRIVER
프린터 드라이버의 변경 내용을 알립니다. 이 일반 플래그 또는 다음 특정 플래그 중 하나 이상을 설정할 수 있습니다.
PRINTER_CHANGE_ADD_PRINTER_DRIVER
PRINTER_CHANGE_SET_PRINTER_DRIVER
PRINTER_CHANGE_DELETE_PRINTER_DRIVER
PRINTER_CHANGE_ALL
앞의 변경 내용이 있는지 알립니다.
PRINTER_CHANGE_SERVER
Windows 7: 서버 변경 내용을 알립니다.
이 플래그는 PRINTER_CHANGE_ALL 값을 설정하여 모니터링되는 변경 내용에 포함되지 않습니다.

앞의 표에 있는 보다 구체적인 플래그에 대한 설명은 FindNextPrinterChangeNotification 함수를 참조하세요.

fdwOptions

알림이 작동할 프린터의 범주를 결정하는 플래그입니다.

의미
PRINTER_NOTIFY_CATEGORY_ALL
0x001000
FindNextPrinterChangeNotification 은 2D 및 3D 프린터 모두에 대한 알림을 반환합니다.
PRINTER_NOTIFY_CATEGORY_3D
0x002000
FindNextPrinterChangeNotification 은 3D 프린터에 대해서만 알림을 반환합니다.

이 플래그가 0으로 설정되면 FindFirstPrinterChangeNotification 은 2D 프린터에서만 작동합니다. 기본값입니다.

pPrinterNotifyOptions [in, optional]

PRINTER_NOTIFY_OPTIONS 구조체에 대한 포인터입니다. 이 구조체의 pTypes 멤버는 하나 이상의 PRINTER_NOTIFY_OPTIONS_TYPE 구조체 배열로, 각각 모니터링할 프린터 정보 필드를 지정합니다. 지정된 필드 중 하나 이상이 변경되면 변경 알림이 발생합니다. 변경이 발생하면 FindNextPrinterChangeNotification 함수가 새 프린터 정보를 검색할 수 있습니다. fdwFilter가 0이 아닌 경우 이 매개 변수는 NULL일 수 있습니다.

모니터링할 수 있는 필드 목록은 PRINTER_NOTIFY_OPTIONS_TYPE 참조하세요.

반환 값

함수가 성공하면 반환 값은 지정된 프린터 또는 인쇄 서버와 연결된 변경 알림 개체에 대한 핸들입니다.

함수가 실패하면 INVALID_HANDLE_VALUE가 반환됩니다.

설명

참고

이는 차단 또는 동기 함수이며 즉시 반환되지 않을 수 있습니다. 이 함수가 얼마나 빨리 반환되는지는 네트워크 상태, 인쇄 서버 구성 및 애플리케이션을 작성할 때 예측하기 어려운 프린터 드라이버 구현 요소와 같은 런타임 요인에 따라 달라집니다. 사용자 인터페이스와의 상호 작용을 관리하는 스레드에서 이 함수를 호출하면 애플리케이션이 응답하지 않는 것처럼 보일 수 있습니다.

프린터 또는 인쇄 서버를 모니터링하려면 FindFirstPrinterChangeNotification 함수를 호출한 다음 , 대기 함수 중 하나를 호출할 때 반환된 변경 알림 개체 핸들을 사용합니다. 변경 알림 개체가 신호 상태가 되면 변경 알림 개체에 대한 대기 작업이 충족됩니다. 시스템은 모니터링되는 프린터 또는 인쇄 서버에서 fdwFilter 또는 pPrinterNotifyOptions 에 지정된 변경 내용 중 하나 이상이 발생하면 개체에 신호를 보냅니다.

FindFirstPrinterChangeNotification을 호출할 때 fdwFilter는 0이 아니어야 하며 pPrinterNotifyOptionsNULL이 아니어야 합니다. 둘 다 지정되면 둘 다에 대해 알림이 발생합니다.

프린터 변경 알림 개체에 대한 대기 작업이 충족되면 FindNextPrinterChangeNotification 함수를 호출하여 알림의 원인을 확인합니다. fdwFilter로 지정된 조건의 경우 FindNextPrinterChangeNotification은 변경된 조건 또는 조건을 보고합니다. pPrinterNotifyOptions로 지정된 프린터 정보 필드의 경우 FindNextPrinterChangeNotification은 변경된 필드 또는 필드와 이러한 필드에 대한 새 정보를 보고합니다. 또한 FindNextPrinterChangeNotification 은 변경 알림 개체를 서명되지 않은 상태로 다시 설정하므로 다른 대기 작업에서 프린터 또는 인쇄 서버를 계속 모니터링할 수 있습니다.

한 가지 예외를 제외하고 변경 알림 개체가 신호 상태가 아닌 경우 FindNextPrinterChangeNotification 함수를 호출하지 마세요. wait 함수가 WAIT_TIMEOUT 값을 반환하면 변경 개체가 신호 상태가 아닙니다. 대기 함수가 시간 초과 없이 성공한 경우에만 FindNextPrinterChangeNotification 함수를 호출합니다. pPrinterNotifyOptions 매개 변수에 설정된 PRINTER_NOTIFY_OPTIONS_REFRESH 비트로 FindNextPrinterChangeNotification이 호출되는 경우는 예외입니다.

변경 알림 개체가 더 이상 필요하지 않으면 FindClosePrinterChangeNotification 함수를 호출하여 닫습니다.

FindFirstPrinterChangeNotification 호출자는 FindClosePrinterChangeNotification이 호출될 때까지 FindFirstPrinterChangeNotification에 전달된 프린터 핸들이 유효한지 확인해야 합니다. 프린터 변경 알림 핸들 전에 프린터 핸들이 닫혀 있으면 추가 알림이 전달되지 않습니다.

FindFirstPrinterChangeNotification 은 3D 프린터에 대한 변경 알림을 서버 핸들에 보내지 않습니다.

참고

WINDOWS XP SP2(서비스 팩 2) 이상에서는 ICF(인터넷 연결 방화벽)가 기본적으로 프린터 포트를 차단하지만 파일 및 인쇄 공유에 대한 예외를 사용하도록 설정할 수 있습니다. 사용자가 다른 컴퓨터에 프린터를 연결하고 예외가 사용하도록 설정되지 않은 경우 사용자는 서버에서 프린터 변경 알림을 받지 않습니다. 컴퓨터 관리자는 예외를 사용하도록 설정해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Winspool.h(Windows.h 포함)
라이브러리
Winspool.lib
DLL
Spoolss.dll

추가 정보

인쇄

인쇄 스풀러 API 함수

FindClosePrinterChangeNotification

FindNextPrinterChangeNotification

OpenPrinter

PRINTER_NOTIFY_OPTIONS

PRINTER_NOTIFY_OPTIONS_TYPE