Метод 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 |