CreatePrintAsyncNotifyChannel 함수(prnasnot.h)
인쇄 드라이버 또는 포트 모니터와 같은 인쇄 스풀러 호스팅 인쇄 구성 요소와 구성 요소에서 알림을 받는 애플리케이션 간에 통신 채널을 만듭니다.
구문
HRESULT CreatePrintAsyncNotifyChannel(
[in] PCWSTR pszName,
[in] PrintAsyncNotificationType *pNotificationType,
[in] PrintAsyncNotifyUserFilter eUserFilter,
[in] PrintAsyncNotifyConversationStyle eConversationStyle,
[in] IPrintAsyncNotifyCallback *pCallback,
[out] IPrintAsyncNotifyChannel **ppIAsynchNotification
);
매개 변수
[in] pszName
인쇄 서버 또는 인쇄 큐의 이름에 대한 포인터입니다.
[in] pNotificationType
채널에서 보낼 알림 유형에 대한 데이터 스키마의 GUID에 대한 포인터입니다.
[in] eUserFilter
알림을 보낼지 여부를 지정하는 값입니다.
- Print Spooler 호스팅 플러그 인 발신자와 동일한 사용자로 실행되는 애플리케이션만 해당합니다.
- 더 광범위한 수신 대기 애플리케이션 집합입니다.
[in] eConversationStyle
통신이 양방향인지 단방향인지를 지정하는 값입니다.
[in] pCallback
수신 대기 애플리케이션이 Print Spooler 호스팅 구성 요소를 다시 호출하는 데 사용할 개체에 대한 포인터입니다. 방향성이kUniDirectional인 경우 NULL이어야 합니다.
[out] ppIAsynchNotification
새 채널에 대한 포인터입니다.
반환 값
HRESULT | 심각도 | 의미 |
---|---|---|
S_OK | SUCCESS | 함수가 성공적으로 완료되었습니다. |
CHANNEL_ALREADY_OPENED | 오류 | 채널이 이미 열려 있습니다. |
MAX_CHANNEL_COUNT_EXCEEDED | 오류 | 지정된 큐 또는 인쇄 서버를 사용하여 지정된 유형의 알림에 대해 이미 등록된 최대 수신 대기 애플리케이션 수입니다. 기본 최대값은 10,000입니다. |
반환 값은 COM 오류 코드입니다. 이 함수는 작업을 성공적으로 완료할 수 있지만 S_OK 이외의 HRESULT 를 반환할 수 있으므로 SUCCEEDED 또는 FAILED 매크로를 사용하여 호출의 성공을 결정해야 합니다. 함수에서 반환된 특정 HRESULT 를 얻으려면 HRESULT_CODE 매크로를 사용합니다.
다음 코드 예제에서는 이러한 매크로를 사용하여 반환 값을 평가하는 방법을 보여 줍니다.
if (SUCCEEDED(hr)){
//Call was successful
}
if (FAILED(hr)) {
// Call failed
}
if (FAILED(hr)) {
// Call failed
switch (HRESULT_CODE(hr)){
case CHANNEL_ALREADY_OPENED:
// Some action
break;
case MAX_CHANNEL_COUNT_EXCEEDED:
// Some action
break;
default:
//Default action
break;
}
} else {
//call succeeded
}
COM 오류 코드에 관한 자세한 내용은 오류 처리를 참조하세요.
가능한 다른 반환 값 은 PrintAsyncNotifyError 를 참조하세요.
설명
채널을 닫려면 IPrintAsyncNotifyChannel::CloseChannel; 그러나 IPrintAsyncNotifyChannel::CloseChannel 은 CreatePrintAsyncNotifyChannel 호출 직후에 호출할 수 없습니다.
IPrintAsyncNotifyChannel::Release()만 호출합니다.
- 이전 IPrintAsyncNotifyChannel::AddRef() 호출과 명시적으로 일치하는 경우 입니다.
- 채널이 UniDirectional 채널이고 CreatePrintAsyncNotifyChannel에 대한 성공적인 호출에서 받은 포인터를 중단하는 경우
- BiDirectional 채널을 만든 후 또는 IPrintNotifyAsyncCallback::OnEventNotify 및 구현에서 다음을 수행하면 됩니다.
- IPrintAsyncNotifyChannel::SendNotification 또는 IPrintAsyncNotifyChannel::CloseChannel OR을 호출하지 않았습니다.
- IPrintAsyncNotifyChannel::SendNotification 또는 IPrintAsyncNotifyChannel::CloseChannel에 대한 호출을 다시 시도하지 않았으므로 OR에 실패했습니다.
- 서버 쪽에서 반환 값 NO_LISTENER OR에 성공한 IPrintAsyncNotifyChannel::SendNotification에 대한 호출을 다시 시도하지 않았습니다.
- 클라이언트 쪽에서 반환 값 CHANNEL_ACQUIRED 성공한 IPrintAsyncNotifyChannel::SendNotification에 대한 호출을 다시 시도하지 않았습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | prnasnot.h |
라이브러리 | Winspool.lib |
DLL | Spoolss.dll |