描述
关闭频道。
C++ 语法
HRESULT CloseChannel( [in] IPrintAsyncNotifyDataObject *pData ); |
PowerBASIC 语法
METHOD CloseChannel ( _ BYVAL pData AS IPrintAsyncNotifyDataObject _ ) AS LONG |
参数
pData
[in]指向通知的指针,提供频道关闭的原因。这可以是NULL。
返回值
HRESULT: S_OK
严重: SUCCESS
含义:功能已成功完成。
HRESULT: CHANNEL_ACQUIRED
严重: ERROR SUCCESS
含义:此频道上的另一个侦听器已经响应。只有第一个被访者可以继续与发件人进行通信。如果此HRESULT具有ERROR严重性,则调用函数应处理错误条件。
HRESULT: CHANNEL_ALREADY_CLOSED
严重: ERROR SUCCESS
含义:频道已关闭。如果返回此HRESULT,因为通道已经被关闭并被释放,则不能调用IPrintAsyncNotifyChanne.Release.如果此HRESULT具有ERROR严重性,则调用函数应处理错误条件。
HRESULT: CHANNEL_CLOSED_BY_ANOTHER_LISTENER
严重: ERROR
含义:呼叫者以外的聆听应用程序关闭通信通道。 一个ERROR严重性,调用函数应该处理错误条件。
HRESULT: CHANNEL_CLOSED_BY_SAME_LISTENER
严重: ERROR
含义:呼叫者已经关闭了通信通道。
HRESULT: INVALID_NOTIFICATION_TYPE
严重: ERROR
含义:指定的通知类型无效。
返回值是COM错误代码。因为此函数可能会成功完成操作,而是返回除S_OK之外的HRESULT,则应使用SUCCEEDED或FAILED宏来确定调用的成功。要获取函数返回的具体HRESULT,请使用HRESULT_CODE宏。以下代码示例显示了如何使用这些宏。
C++
if (SUCCEEDED(hr)){
//call was successful
}
if (FAILED(hr)) {
// call failed
}
if (FAILED(hr)) {
// call failed
switch (HRESULT_CODE(hr)){
case CHANNEL_CLOSED_BY_ANOTHER_LISTENER:
// some action
break;
case CHANNEL_CLOSED_BY_SAME_LISTENER:
// some action
break;
default:
//default action
break;
}
} else {
//call succeeded
}
PowerBASIC++
IF SUCCEEDED(hr) THEN
' // call was successful
END IF
IF FAILED(hr) THEN
' // call failed
END IF
IF FAILED(hr) THEN
' // call failed
SELECT CASE HRESULT_CODE(hr)
CASE %CHANNEL_CLOSED_BY_ANOTHER_LISTENER
' // some action
CASE %CHANNEL_CLOSED_BY_SAME_LISTENER
' // some action
CASE ELSE
' // default action
END SELECT
ELSE
' // call succeeded
END IF
有关其他可能的返回值,请参阅PrintAsyncNotifyError.
备注
可以通过Print Spooler托管组件或监听应用程序调用CloseChannel。
如果在打印假脱机程序处理较早的调用SendNotification时进行IPrintAsyncNotifyChannel::SendNotification呼叫,则打印后台处理程序将排队通知。如果Print Spooler托管组件或应用程序调用{??989796212},排队的通知将被丢弃。
CloseChannel在调用CreatePrintAsyncNotifyChannel后不能立即调用。


