Функция WsCloseChannel (webservices.h)

Закрывает указанный канал.

Синтаксис

HRESULT WsCloseChannel(
  [in]           WS_CHANNEL             *channel,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

Параметры

[in] channel

Указатель на структуру WS_CHANNEL , представляющую закрываемого канала.

[in, optional] asyncContext

Указатель на структуру данных WS_ASYNC_CONTEXT , содержащую сведения для асинхронного вызова функции. Передайте значение NULL для синхронного вызова функции.

[in, optional] error

Указатель на структуру WS_ERROR , в которой хранятся дополнительные сведения об ошибках в случае сбоя функции.

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

Если функция выполняется успешно, она возвращает NO_ERROR; В противном случае возвращается код ошибки HRESULT.

Код возврата Описание
WS_S_ASYNC
Асинхронная операция по-прежнему находится в состоянии ожидания.
WS_E_OPERATION_ABORTED
Закрытие канала было прервано вызовом WsAbortChannel во время закрытия канала.
WS_E_INVALID_OPERATION
Канал был в недопустимом состоянии (см. раздел Примечания).
WS_E_ENDPOINT_DISCONNECTED
Подключение к удаленной конечной точке было прервано.
WS_E_ENDPOINT_FAILURE
Удаленной конечной точке не удалось обработать запрос.
WS_E_INVALID_FORMAT
Входные данные не были в ожидаемом формате или не имели ожидаемого значения.
WS_E_OPERATION_TIMED_OUT
Операция не была завершена в отведенное время.
WS_E_QUOTA_EXCEEDED
Превышена квота.
E_OUTOFMEMORY
Недостаточно памяти для завершения операции.
E_INVALIDARG
Один или несколько аргументов недопустимы.
Другие ошибки
Эта функция может возвращать другие ошибки, не перечисленные выше.

Комментарии

Если вы открываете канал или успешно принимаете канал, его необходимо закрыть, когда он больше не нужен. После закрытия канала связанные ресурсы можно безопасно освободить.

Процесс закрытия канала будет ожидать завершения всех уже инициированных операций ввода-вывода.

Если в настоящее время нет сообщений, которые в настоящее время считываются или записываются для канала, канал пытается корректно завершить работу. В противном случае все ожидающие ввода-вывода на самом канале прерваны, а канал выполняет грубое завершение работы.

Если канал пытается корректно завершить работу, но обнаруживает ошибку, WsCloseChannel вернет ошибку, но канал по-прежнему будет закрыт.

Эта операция разрешена, только если канал находится в WS_CHANNEL_STATE_OPEN или WS_CHANNEL_STATE_FAULTED состояниях.

Закрытие канала автоматически отменяет связь с любыми сообщениями, которые находятся в процессе чтения или записи. Поэтому нет необходимости вызывать WsAbandonMessage перед вызовом WsCloseChannel.

Требования

Требование Значение
Минимальная версия клиента Windows 7 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header webservices.h
Библиотека WebServices.lib
DLL WebServices.dll