Поделиться через


Отключение подключения Schannel

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

Отключить подключение Schannel

  1. Вызовите функцию ApplyControlToken, указав управляющий токен SCHANNEL_SHUTDOWN.
  2. Получив SEC_E_OK возвращаемое значение из ApplyControlToken, вызовите функцию(серверы)InitializeSecurityContext (Schannel) (клиенты) илифункцию AcceptSecurityContext (Schannel) (серверы), передавая пустые буферы.
  3. Продолжайте, как если бы приложение создавало новое подключение, пока функция не возвращает SEC_I_CONTEXT_EXPIRED или SEC_E_OK, чтобы указать, что подключение завершается.
  4. Отправьте окончательные выходные данные, если таковые есть, в удаленную сторону.
  5. Вызовите DeleteSecurityContext, чтобы освободить ресурсы, занятые соединением.

Распознавание завершения работы

Функция DecryptMessage (Schannel) возвращает SEC_I_CONTEXT_EXPIRED при завершении подключения отправителем сообщения. После получения этого возвращаемого значения следуйте процедуре завершения подключения Schannel, описанной ранее в этом разделе.