다음을 통해 공유


RegisterForPrintAsyncNotifications 함수(prnasnot.h)

애플리케이션이 프린터 드라이버, 인쇄 프로세서 및 포트 모니터와 같은 인쇄 스풀러 호스팅 인쇄 구성 요소의 알림을 등록할 수 있도록 합니다.

구문

HRESULT RegisterForPrintAsyncNotifications(
  [in]  PCWSTR                            pszName,
  [in]  PrintAsyncNotificationType        *pNotificationType,
  [in]  PrintAsyncNotifyUserFilter        eUserFilter,
  [in]  PrintAsyncNotifyConversationStyle eConversationStyle,
  [in]  IPrintAsyncNotifyCallback         *pCallback,
  [out] HANDLE                            *phNotify
);

매개 변수

[in] pszName

인쇄 서버 또는 인쇄 큐의 이름에 대한 포인터입니다.

[in] pNotificationType

애플리케이션이 수신해야 하는 알림 유형에 대한 데이터 스키마의 GUID에 대한 포인터입니다.

[in] eUserFilter

알림을 보낼지 여부를 지정하는 값입니다.

  • 인쇄 스풀러 호스팅 플러그 인 발신자와 동일한 사용자로 실행되는 애플리케이션만 해당합니다.
  • 더 광범위한 수신 대기 애플리케이션 집합입니다.

[in] eConversationStyle

통신이 양방향인지 단방향인지를 지정하는 값입니다.

[in] pCallback

Print Spooler 호스팅 구성 요소가 애플리케이션을 다시 호출하는 데 사용할 개체에 대한 포인터입니다. NULL이 되어서는 안 됩니다.

[out] phNotify

등록을 나타내는 구조체에 대한 포인터입니다.

반환 값

HRESULT 심각도 의미
S_OK SUCCESS 함수가 성공적으로 완료되었습니다.
ALREADY_REGISTERED 오류 등록 개체가 이미 등록되었습니다.
LOCAL_ONLY_REGISTRATION SUCCESS 로컬 알림 등록에 성공했습니다. 원격 알림 등록이 아닙니다.
MAX_REGISTRATION_COUNT_EXCEEDED 오류 최대 등록 수에 도달했습니다. 더 이상 등록이 허용되지 않습니다.
REMOTE_ONLY_REGISTRATION SUCCESS 원격 알림 등록에 성공했습니다. 로컬 알림 등록이 아닙니다.
 

반환 값은 COM 오류 코드입니다. 이 함수는 작업을 성공적으로 완료할 수 있지만 S_OK 이외의 HRESULT를 반환할 수 있으므로 SUCCEEDED 또는 FAILED 매크로를 사용하여 호출의 성공을 결정해야 합니다. 함수에서 반환된 특정 HRESULT를 얻으려면 HRESULT_CODE 매크로를 사용합니다.

다음 코드 예제에서는 이러한 매크로를 사용하여 반환 값을 평가하는 방법을 보여 줍니다.

if (SUCCEEDED(hr)) {
  // Call succeeded, check HRESULT value returned
  switch (HRESULT_CODE(hr)){
    case S_OK:
      // Some action 
      break;
      case LOCAL_ONLY_REGISTRATION:
      // Some action 
      break;
    case REMOTE_ONLY_REGISTRATION:
      // Some action 
      break;
    default:
      // Default action 
      break;
  }
} else {
  // Call failed, check HRESULT value returned
  switch (HRESULT_CODE(hr)){
    case ALREADY_REGISTERED:
      // Some action 
      break;
    case MAX_REGISTRATION_COUNT_EXCEEDED:
      // Some action 
      break;
    default:
      // Default action 
      break;
  }
}

COM 오류 코드에 관한 자세한 내용은 오류 처리를 참조하세요.

다른 가능한 반환 값 은 PrintAsyncNotifyError 를 참조하세요.

설명

참고 이는 차단 또는 동기 함수이며 즉시 반환되지 않을 수 있습니다. 이 함수가 얼마나 빨리 반환되는지는 네트워크 상태, 인쇄 서버 구성 및 프린터 드라이버 구현과 같은 런타임 요인(애플리케이션을 작성할 때 예측하기 어려운 요소)에 따라 달라집니다. 사용자 인터페이스와의 상호 작용을 관리하는 스레드에서 이 함수를 호출하면 애플리케이션이 응답하지 않는 것처럼 보일 수 있습니다.
 
단방향 채널을 통해 알림을 중지하기 위해 수신 대기 애플리케이션은 RegisterForPrintAsyncNotifications에서 반환된 pRegistrationHandler 값을 UnRegisterForPrintAsyncNotifications에 전달합니다. 양방향 채널의 경우 UnRegisterForPrintAsyncNotifications 를 호출하여 해당 호출 후에 생성된 새 채널의 알림을 차단합니다. 기존 양방향 채널에서 알림을 차단하려면 수신 대기 애플리케이션이 IPrintAsyncNotifyChannel::CloseChannel을 사용하여 채널을 닫아야 합니다.

RegisterForPrintAsyncNotifications 호출의 결과로 pCallback 개체에 대해 IUnknown::AddRef 메서드가 호출됩니다. UnRegisterForPrintAsyncNotifications를 호출하면 pCallback 개체가 해제됩니다. pCallback 개체의 참조 횟수도 채널이 만들어지고 채널이 닫혀 있을 때 감소할 때 증가합니다.

pSchema 매개 변수는 스풀러가 수신기 클라이언트를 필터링하는 데 수락하고 사용하는 GUID 포인터입니다. 스풀러 비동기 알림 메커니즘의 모든 클라이언트는 자체 알림 유형을 정의할 수 있습니다. 스풀러는 전송된 알림 유형을 인식하지 못하더라도 알림 유형에 따라 수신기 클라이언트를 필터링합니다. pSchema가 참조하는 알림 스키마는 IPrintAsyncNotifyDataObject를 노출하는 알림 개체에서 사용하는 스키마입니다. 스풀러 알림 파이프의 클라이언트는 자체 데이터 스키마를 정의할 수 있으며 모든 데이터 형식을 앞뒤로 보낼 수 있으며 pSchema 에서 참조하는 GUID는 해당 데이터 스키마에 고유합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 prnasnot.h
라이브러리 WinSpool.lib
DLL Spoolss.dll

추가 정보

클라이언트 가장(Client Impersonation)

인쇄 스풀러 API 함수

인쇄