描述
向指定通道上提供通知的侦听器提醒。该方法由打印系统调用。
C++ 语法
HRESULT OnEventNotify( [in] IPrintAsyncNotifyChannel *pChannel, [in] IPrintAsyncNotifyDataObject *pData ); |
PowerBASIC 语法
METHOD OnEventNotify ( _ BYVAL pChannel AS IPrintAsyncNotifyChannel, _ BYVAL pData AS IPrintAsyncNotifyDataObject _ ) AS LONG |
参数
pChannel
[in]指向发送方和侦听器使用的通道的指针。
pData
[in]指向包含通知数据及其大小和类型的对象的指针。
返回值
HRESULT: S_OK
严重: SUCCESS
含义:此函数成功完成。
HRESULT: INTERNAL_NOTIFICATION_QUEUE_IS_FULL
严重: ERROR
含义:打印假脱机程序无法容纳任何更多排队的通知。默认情况下,允许最多10个通知排队。当返回此错误时,侦听应用程序不会像发送通知那样处理通知。该通知应该被重新发送或丢弃。
返回值是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将在注册通知时调用由聆听应用程序提供的IPrintAsyncNotifyCallback对象的OnEventNotify方法。对于单向通知,P沟道为NULL。对于双向通道,P沟道指向一个IPrintAsyncNotifyChannel以供聆听应用程序使用以发送响应。监听器将通过调用IPrintAsyncNotifyChannel的SendNotification方法来执行此操作。


