Schannel 接続のシャットダウン
接続が完了したら、クライアントまたはサーバーをシャットダウンする必要があります。 さらに、相手側はシャットダウンを認識し、接続を削除する必要があります。
Schannel 接続をシャットダウンするには
- SCHANNEL_SHUTDOWNコントロール トークンを指定して、 ApplyControlToken 関数を呼び出します。
- ApplyControlToken からSEC_E_OK戻り値を受け取った後、InitializeSecurityContext (Schannel) (クライアント) または AcceptSecurityContext (Schannel) (サーバー) 関数を呼び出し、空のバッファーを渡します。
- 関数がSEC_I_CONTEXT_EXPIREDを返すか、接続がシャットダウンされたことを示すSEC_E_OKまで、アプリケーションが新しい接続を作成しているかのように続行します。
- 最終的な出力情報がある場合は、リモート パーティに送信します。
- DeleteSecurityContext を呼び出して、接続によって保持されているリソースを解放します。
シャットダウンの認識
DecryptMessage (Schannel) 関数は、メッセージ送信者が接続をシャットダウンしたときにSEC_I_CONTEXT_EXPIREDを返します。 この戻り値を受け取った後、このトピックの前半の「Schannel 接続をシャットダウンするには」の手順に従います。