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
值,指定是否將通知傳送至:
- 只有與列印後台處理程式裝載外掛程式傳送者相同的使用者執行的應用程式。
- 一組更廣泛的接聽應用程式。
[in] eConversationStyle
值,指定通訊是雙向還是單向。
[in] pCallback
接聽應用程式將用來回呼列印後台處理程式裝載元件之物件的指標。 如果方向性為 kUniDirectional,這應該是 NULL。
[out] ppIAsynchNotification
新通道的指標。
傳回值
HRESULT | 嚴重性 | 意義 |
---|---|---|
S_OK | SUCCESS | 語言函式已順利完成。 |
CHANNEL_ALREADY_OPENED | ERROR | 通道已經開啟。 |
MAX_CHANNEL_COUNT_EXCEEDED | ERROR | 接聽應用程式的數目上限已經向指定的佇列或列印伺服器註冊指定的通知類型。 預設最大值為 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;不過,呼叫 CreatePrintAsyncAsyncNotifyChannel 之後,無法立即呼叫 IPrintAsyncNotifyChannel::CloseChannel。
僅呼叫 IPrintAsyncNotifyChannel::Release () :
- 如果它是與先前的 IPrintAsyncNotifyChannel::AddRef () 呼叫的明確相符專案,則為 。
- 如果通道是 UniDirectional 通道,而且您放棄成功呼叫 CreatePrintAsyncNotifyChannel 時收到的指標。
- 如果您在建立 BiDirectional 通道之後或在 IPrintNotifyAsyncCallback::OnEventNotify 和的實作中:
- 您未呼叫 IPrintAsyncNotifyChannel::SendNotification 或 IPrintAsyncNotifyChannel::CloseChannel OR
- 您未重試呼叫失敗 OR 的 IPrintAsyncNotifyChannel::SendNotification 或 IPrintAsyncNotifyChannel::CloseChannel
- 在伺服器端,您未重試呼叫成功且傳回值NO_LISTENER OR 的 IPrintAsyncNotifyChannel::SendNotification
- 在用戶端上,您未重試對 IPrintAsyncNotifyChannel::SendNotification 的呼叫,其成功傳回值CHANNEL_ACQUIRED。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | prnasnot.h |
程式庫 | Winspool.lib |
Dll | Spoolss.dll |