Arrêt d’une connexion Schannel

Lorsqu’un client ou un serveur a terminé une connexion, il doit l’arrêter. L’autre partie, à son tour, doit reconnaître l’arrêt et supprimer la connexion.

Pour arrêter une connexion Schannel

  1. Appelez la fonction ApplyControlToken en spécifiant le jeton de contrôle SCHANNEL_SHUTDOWN.
  2. Après avoir reçu une valeur de retour SEC_E_OK de ApplyControlToken, appelez la fonction InitializeSecurityContext (Schannel) (clients) ou AcceptSecurityContext (Schannel) (serveurs), en passant des mémoires tampons vides.
  3. Continuez comme si votre application créait une connexion jusqu’à ce que la fonction retourne SEC_I_CONTEXT_EXPIRED ou SEC_E_OK pour indiquer que la connexion est arrêtée.
  4. Envoyez les informations de sortie finales, le cas échéant, à la partie distante.
  5. Appelez DeleteSecurityContext pour libérer les ressources détenues par la connexion.

Reconnaissance d’un arrêt

La fonction DecryptMessage (Schannel) retourne SEC_I_CONTEXT_EXPIRED lorsque l’expéditeur du message a arrêté la connexion. Après avoir reçu cette valeur de retour, suivez la procédure Pour arrêter une connexion Schannel, plus haut dans cette rubrique.