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
一个或多个参数无效。
其他错误
此函数可能会返回上面未列出的其他错误。

注解

如果打开某个通道或成功接受某个通道,则必须在不再需要该通道时将其关闭。 关闭通道后,可以安全地释放关联的资源。

通道关闭过程将等待任何已启动的挂起 I/O 完成。

如果当前没有为通道读取或写入的消息,则通道将尝试正常关闭。 否则,通道本身上仍处于挂起状态的所有 I/O 都会中止,并且通道会进行粗鲁的关闭。

如果通道尝试正常关闭,但遇到错误, 则 WsCloseChannel 将返回错误,但通道仍将关闭。

仅当通道处于WS_CHANNEL_STATE_OPEN或WS_CHANNEL_STATE_FAULTED状态时,才允许此操作。

关闭通道会自动取消关联正在读取或写入的任何消息。 因此,无需在调用 WsCloseChannel) 之前调用 WsAbandonMessage

要求

要求
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 webservices.h
Library WebServices.lib
DLL WebServices.dll