勇芳软件工作室.汉化:  Printing > Print Spooler API > Asynchronous Printing Notification > Asynchronous Printing Notification Interfaces > IPrintAsyncNotifyCallback >

OnEventNotify Method

Previous pageReturn to chapter overviewNext page

描述

 

向指定通道上提供通知的侦听器提醒。该方法由打印系统调用。

 

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以供聆听应用程序使用以发送响应。监听器将通过调用IPrintAsyncNotifyChannelSendNotification方法来执行此操作。