WSManDisconnectShell 函数 (wsman.h)

断开活动 shell 及其关联命令的网络连接。

语法

void WSManDisconnectShell(
  [in, out] WSMAN_SHELL_HANDLE          shell,
            DWORD                       flags,
  [in]      WSMAN_SHELL_DISCONNECT_INFO *disconnectInfo,
  [in]      WSMAN_SHELL_ASYNC           *async
);

参数

[in, out] shell

指定调用 WSManCreateShell 函数返回的句柄。 此参数不能为 NULL

flags

可以是 WSMAN_FLAG_SERVER_BUFFERING_MODE_DROP 标志或 WSMAN_FLAG_SERVER_BUFFERING_MODE_BLOCK 标志。

[in] disconnectInfo

指向 WSMAN_SHELL_DISCONNECT_INFO 结构的指针,该结构指定服务器会话可能强制实施的空闲超时。 如果此参数为 NULL,则不会更改服务器会话空闲超时。

[in] async

定义异步结构以包含可选用户上下文和强制回调函数。 有关详细信息,请参阅 WSMAN_SHELL_ASYNC。 此参数不能为 NULL

返回值

备注

此函数挂起与主动连接的服务器会话的网络连接。 在 shell 实例上执行的任何操作(如 WSManRunShellCommandWSManSendShellInputWSManSignalShell)在断开连接之前必须完成。 这可确保在 shell 断开连接之前,服务器会话接收通过 WSManSendShellInput 发送的任何数据。 客户端可以选择使用 标志来修改服务器缓冲模式。 观察到以下行为:

  • WSMAN_FLAG_SERVER_BUFFERING_MODE_DROP – 当缓冲区已满时,服务器会删除响应流缓冲区中的早期数据,以确保相应的命令操作继续运行。
  • WSMAN_FLAG_SERVER_BUFFERING_MODE_BLOCK – 当响应流缓冲区已满时,服务器将阻止命令执行。 如果未指定标志,服务器将继续使用已配置的模式或创建 shell 时指定的模式。 如果发生网络故障,如果客户端无法联系会话以断开 shell 的连接,则返回以下错误:

    ERROR_WINRS_SHELL_DISCONNECT_OPERATION_NOT_GRACEFUL

    客户端会话仍会进入断开连接状态,但不能保证在断开会话之前已完成任何以前的操作。

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 Windows
标头 wsman.h
Library WsmSvc.lib
DLL WsmSvc.dll