Завершение работы подключения Schannel
Когда клиент или сервер завершает работу с подключением, он должен завершить работу. Другая сторона, в свою очередь, должна распознать завершение работы и удалить подключение.
Завершение подключения Schannel
- Вызовите функцию ApplyControlToken , указав маркер управления SCHANNEL_SHUTDOWN.
- После получения SEC_E_OK возвращаемого значения из ApplyControlToken вызовите функцию InitializeSecurityContext (Schannel) (клиенты) или AcceptSecurityContext (Schannel) (серверы), передавая пустые буферы.
- Продолжайте работу так, как если бы приложение создавало новое подключение, пока функция не вернет SEC_I_CONTEXT_EXPIRED или SEC_E_OK, чтобы указать, что подключение завершилось.
- Отправьте окончательные выходные данные, если таковые есть, удаленной стороне.
- Вызовите Метод DeleteSecurityContext , чтобы освободить ресурсы, удерживаемые подключением.
Распознавание завершения работы
Функция DecryptMessage (Schannel) возвращает SEC_I_CONTEXT_EXPIRED, когда отправитель сообщения завершит подключение. После получения этого возвращаемого значения выполните процедуру Завершение подключения Schannel, описанную выше в этом разделе.