关闭 Schannel 连接

客户端或服务器完成连接后,必须将其关闭。 另一方反过来必须识别关闭并删除连接。

关闭 Schannel 连接

  1. 调用 ApplyControlToken 函数,指定SCHANNEL_SHUTDOWN控制令牌。
  2. ApplyControlToken 收到SEC_E_OK返回值后,调用 InitializeSecurityContext (Schannel) (客户端) 或 AcceptSecurityContext (Schannel) (服务器) 函数传入空缓冲区。
  3. 继续,就像应用程序正在创建新连接一样,直到函数返回SEC_I_CONTEXT_EXPIRED或SEC_E_OK以指示连接已关闭。
  4. 将最终输出信息(如果有)发送给远程方。
  5. 调用 DeleteSecurityContext 以释放连接持有的资源。

识别关闭

当消息发送方关闭连接时, DecryptMessage (Schannel) 函数返回SEC_I_CONTEXT_EXPIRED。 收到此返回值后,请按照本主题前面的关闭 Schannel 连接的过程进行操作。