Arresto di una connessione Schannel

Al termine di una connessione, un client o un server deve arrestarlo. L'altra parte, a sua volta, deve riconoscere l'arresto ed eliminare la connessione.

Per arrestare una connessione Schannel

  1. Chiamare la funzione ApplyControlToken , specificando il token di controllo SCHANNEL_SHUTDOWN.
  2. Dopo aver ricevuto un valore restituito SEC_E_OK da ApplyControlToken, chiamare la funzione InitializeSecurityContext (client) o AcceptSecurityContext (Schannel)( server), passando i buffer vuoti.
  3. Procedere come se l'applicazione creasse una nuova connessione finché la funzione non restituisce SEC_I_CONTEXT_EXPIRED o SEC_E_OK per indicare che la connessione viene arrestata.
  4. Inviare le informazioni di output finali, se presenti, alla parte remota.
  5. Chiamare DeleteSecurityContext per liberare risorse mantenute dalla connessione.

Riconoscimento di un arresto

La funzione DecryptMessage (Schannel) restituisce SEC_I_CONTEXT_EXPIRED quando il mittente del messaggio ha arrestato la connessione. Dopo aver ricevuto questo valore restituito, seguire la procedura Per arrestare una connessione Schannel, in precedenza in questo argomento.