Поделиться через


Метод IPrintAsyncNotifyChannel::CloseChannel (prnasnot.h)

Закрывает канал.

Синтаксис

HRESULT CloseChannel(
  [in] IPrintAsyncNotifyDataObject *pData
);

Параметры

[in] pData

Указатель на уведомление, указывающее причину закрытия канала. Этот указатель может иметь значение NULL.

Возвращаемое значение

HRESULT Severity Значение
S_OK УСПЕШНОЕ ЗАВЕРШЕНИЕ Функция успешно завершена.
CHANNEL_ACQUIRED ОШИБКА

или

УСПЕШНОЕ ЗАВЕРШЕНИЕ

Другой прослушиватель этого канала уже ответил. Только первый респондент может продолжить связь с отправителем.

Если этот HRESULT имеет серьезность ERROR, вызывающая функция должна обрабатывать условие ошибки.

CHANNEL_ALREADY_CLOSED ОШИБКА

или

УСПЕШНОЕ ЗАВЕРШЕНИЕ

Канал уже закрыт. IPrintAsyncNotifyChannel::Release не должен вызываться, если возвращается этот HRESULT, так как канал уже закрыт и освобожден.

Если этот HRESULT имеет серьезность ERROR, вызывающая функция должна обрабатывать условие ошибки.

CHANNEL_CLOSED_BY_ANOTHER_LISTENER ОШИБКА Прослушивающее приложение, отличное от вызывающего абонента, закрыло коммуникационный канал.
CHANNEL_CLOSED_BY_SAME_LISTENER ОШИБКА Вызывающий объект уже закрыл коммуникационный канал.
INVALID_NOTIFICATION_TYPE ОШИБКА Указанный тип уведомления недопустим.
 

Возвращаемые значения — это коды ошибок COM. Так как эта функция может успешно завершить операцию, но вернуть HRESULT, отличный от S_OK для определения успешности вызова следует использовать макрос 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 может вызываться любой стороной канала связи — компонентом, размещенным в очереди печати печати или прослушивающим приложением.

Если вызов IPrintAsyncNotifyChannel::SendNotification выполняется во время обработки очереди печати печати более ранний вызов SendNotification, диспетчер очереди печати печати будет ставить уведомления в очередь. Уведомления, помещенные в очередь, отклоняются, если компонент, размещенный в диспетчере печати печати, или приложение вызывает CloseChannel.

CloseChannel нельзя вызвать сразу после вызова CreatePrintAsyncNotifyChannel.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header prnasnot.h
DLL Prnasnot.dll

См. также раздел

Интерфейсы уведомлений асинхронной печати

IPrintAsyncNotifyChannel

Вывод на печать