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

ChannelClosed Method

Previous pageReturn to chapter overviewNext page

描述

 

向一个通信通道的成员提供通知,通知其他成员通道正在关闭。

 

C++ 语法

 

HRESULT ChannelClosed(

[in] IPrintAsyncNotifyChannel *pChannel,

[in] IPrintAsyncNotifyDataObject *pData

);

 

PowerBASIC 语法

 

METHOD ChannelClosed ( _

BYVAL pChannel AS IPrintAsyncNotifyChannel, _

BYVAL pData AS IPrintAsyncNotifyDataObject _

) AS LONG

 

参数

 

pChannel

 

[in]指向发送方和侦听器使用的通道的指针。

 

pData

 

[in]指向包含通知数据(或响应)及其大小和类型的对象的指针。

 

返回值

 

HRESULT: S_OK

严重: SUCCESS

含义:此函数成功完成。

 

HRESULT: CHANNEL_ALREADY_CLOSED

严重: 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

}

 

if (SUCCEEDED(hr)){

//call was successful

}

 

if (FAILED(hr)) {

// call failed

}

 

PowerBASIC++

 

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.

 

备注

 

当打印后台打印程序托管的组件与监听应用程序关闭通信通道时,应在调用注册通知时调用IPrintAsyncNotifyCallback对象提供的IPrintAsyncNotifyCallback对象的方法。如果打印服务器崩溃,打印后台打印程序将尝试调用侦听应用程序提供的IPrintAsyncNotifyCallback对象的IPrintAsyncNotifyCallback方法。它将发送一个类型NOTIFICATION_RELEASE的通知。

 

如果监听应用程序关闭双向通信通道,则在创建通道时,应调用组件提供的IPrintAsyncNotifyCallback对象的IPrintAsyncNotifyCallback方法。如果侦听应用程序崩溃,打印后台程序将调用由Print Spooler托管的组件提供的IPrintAsyncNotifyCallback对象的OnEventNotify方法。它将发送一个类型NOTIFICATION_RELEASE的通知。