IOCP、ソケット、オーバーラップを使用するサーバーがあります。最初はすべてが素晴らしいです。リッスンしているソケットは、IOCP で AcceptEx を使用して、新しく作成されたソケットにハンドオフします。何千もの接続を問題なく処理できます。
サーバー プロセスの処理が遅れると、リッスン ポートを閉じて切断します。追いつくと、新しい IOCP でリッスン ポートを再確立します。
私が遭遇した問題は、リスニング ポートを再確立した後、新しい接続が到着した後、上記とまったく同じコード パスを使用して受け入れようとすることです。AcceptEx は WSAEINVAL で失敗します。
いくつかの詳細を省略していることは承知しています (そして、悪魔は常に詳細に潜んでいますよね?)。
好奇心旺盛な方がさらに詳しい情報をお知りになりたい場合は、喜んで提供させていただきます。