IPrintAsyncNotifyChannel::CloseChannel 方法 (prnasnot.h)

关闭通道。

语法

HRESULT CloseChannel(
  [in] IPrintAsyncNotifyDataObject *pData
);

parameters

[in] pData

指向指定通道关闭原因的通知的指针。 此指针可以为 NULL

返回值

HRESULT 严重性 含义
S_OK 成功 函数已成功完成。
CHANNEL_ACQUIRED ERROR

成功

此频道上的另一个侦听器已做出响应。 只有第一个答复者可以继续与发件人通信。

如果此 HRESULT 具有 ERROR 严重性,则调用函数应处理错误条件。

CHANNEL_ALREADY_CLOSED ERROR

成功

通道已关闭。 如果返回此 HRESULT,则不得调用 IPrintAsyncNotifyChannel::Release,因为通道已关闭并释放。

如果此 HRESULT 具有 ERROR 严重性,则调用函数应处理错误条件。

CHANNEL_CLOSED_BY_ANOTHER_LISTENER ERROR 除调用方以外的侦听应用程序关闭了信道。
CHANNEL_CLOSED_BY_SAME_LISTENER ERROR 调用方已关闭通信通道。
INVALID_NOTIFICATION_TYPE ERROR 指定的通知类型无效。
 

返回值为 COM 错误代码。 由于此函数可能成功完成操作,但返回除S_OK以外的 HRESULT,因此应使用 SUCCEEDED 或 FAILED 宏来确定调用是否成功。 若要获取函数返回的特定 HRESULT,请使用 HRESULT_CODE 宏。 下面的代码示例演示如何使用这些宏。

有关其他可能的返回值,请参阅 PrintAsyncNotifyError

有关 COM 错误代码的详细信息,请参阅错误处理

if (SUCCEEDED(hr)) {
  // Call succeeded, check HRESULT value returned
  switch (HRESULT_CODE(hr)){
    case CHANNEL_ACQUIRED:
      // Some action 
      break;
    case CHANNEL_ALREADY_CLOSED:
      // Some action 
      break;
    default:
      // Default action 
      break;
  }
} else {
  // Call failed, check HRESULT value returned
  switch (HRESULT_CODE(hr)){
    case CHANNEL_CLOSED_BY_ANOTHER_LISTENER:
      // Some action 
      break;
    case CHANNEL_CLOSED_BY_SAME_LISTENER:
      // Some action 
      break;
    case INVALID_NOTIFICATION_TYPE:
      // Some action 
      break;
    case CHANNEL_ACQUIRED:
      // This can be an error and a successful return
      //  some action 
      break;
    case CHANNEL_ALREADY_CLOSED:
      // This can be an error and a successful return
      //  some action 
      break;
    default:
      // Default action 
      break;
  }
}

注解

由信道的任一端(打印后台处理程序或侦听应用程序托管的组件)都可以调用 CloseChannel

如果在打印后台处理程序处理对 SendNotification 的早期调用时发出 IPrintAsyncNotifyChannel::SendNotification 调用,则打印后台处理程序会将通知排队。 如果打印后台处理程序或应用程序托管的组件调用 CloseChannel,则会放弃排队通知。

在调用 CreatePrintAsyncNotifyChannel 后,无法立即调用 CloseChannel

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 prnasnot.h
DLL Prnasnot.dll

请参阅

异步打印通知接口

IPrintAsyncNotifyChannel

打印