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

CloseChannel Method

Previous pageReturn to chapter overviewNext page

描述

 

关闭频道。

 

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后不能立即调用。