IPrintAsyncNotifyChannel::CloseChannel 方法 (prnasnot.h)
關閉通道。
語法
HRESULT CloseChannel(
[in] IPrintAsyncNotifyDataObject *pData
);
參數
[in] pData
指定通道關閉原因的通知指標。 此指標可以是 Null。
傳回值
HRESULT | 嚴重性 | 意義 |
---|---|---|
S_OK | SUCCESS | 語言函式已順利完成。 |
CHANNEL_ACQUIRED |
ERROR 或 SUCCESS |
此通道上的另一個接聽程式已回應。 只有第一個回應者可以繼續與寄件者通訊。
如果此 HRESULT 具有 ERROR 嚴重性,呼叫函式應該會處理錯誤狀況。 |
CHANNEL_ALREADY_CLOSED |
ERROR 或 SUCCESS |
通道已經關閉。 如果傳回此 HRESULT,則 IPrintAsyncNotifyChannel::Release 不得呼叫,因為通道已經關閉並釋放。
如果此 HRESULT 具有 ERROR 嚴重性,呼叫函式應該會處理錯誤狀況。 |
CHANNEL_CLOSED_BY_ANOTHER_LISTENER | ERROR | 呼叫端以外的接聽應用程式已關閉通道。 |
CHANNEL_CLOSED_BY_SAME_LISTENER | ERROR | 呼叫端已經關閉通道。 |
INVALID_NOTIFICATION_TYPE | ERROR | 指定的通知類型無效。 |
傳回值為 COM 錯誤碼。 由於此函式可能會順利完成作業,但傳回S_OK您應該使用 SUCCEEDED 或 FAILED 宏來判斷呼叫是否成功。 若要取得函式所傳回的特定 HRESULT,請使用 HRESULT_CODE 宏。 下列程式碼範例示範如何使用這些宏。
如需其他可能的傳回值,請參閱 PrintAsyncNotifyError 。
如需 COM 錯誤碼的詳細資訊,請參閱 錯誤處理。
if (SUCCEEDED(hr)) {
// Call succeeded, check HRESULT value returned
switch (HRESULT_CODE(hr)){
case CHANNEL_ACQUIRED:
// Some action
break;
case CHANNEL_ALREADY_CLOSED:
// Some action
break;
default:
// Default action
break;
}
} else {
// Call failed, check HRESULT value returned
switch (HRESULT_CODE(hr)){
case CHANNEL_CLOSED_BY_ANOTHER_LISTENER:
// Some action
break;
case CHANNEL_CLOSED_BY_SAME_LISTENER:
// Some action
break;
case INVALID_NOTIFICATION_TYPE:
// Some action
break;
case CHANNEL_ACQUIRED:
// This can be an error and a successful return
// some action
break;
case CHANNEL_ALREADY_CLOSED:
// This can be an error and a successful return
// some action
break;
default:
// Default action
break;
}
}
備註
CloseChannel 可由通道的任一端呼叫,也就是由列印多工緩衝處理器或接聽應用程式裝載的元件。
如果在列印多工緩衝處理器正在處理對 SendNotification的先前呼叫時,進行IPrintAsyncNotifyChannel::SendNotification呼叫,列印多工緩衝處理常式就會將通知排入佇列。 如果列印多工緩衝處理器所裝載的元件或應用程式呼叫 CloseChannel,則會捨棄已排入佇列的通知。
在呼叫 CreatePrintAsyncNotifyChannel之後,無法立即呼叫CloseChannel。
需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | prnasnot.h |
Dll | Prnasnot.dll |