0

Windows 8、x64。

重複した Windows ソケット API を IOCP で使用します。

ソケットの予期しない動作に気付きました: たとえば、DisconnectEx を呼び出すとエラー WSAENOTCONN が返されますが、後で GetQueuedCompletionStatusEx でイベントを受け取ります (返されたエラーに関係なく、スケジュールされていたように)。AcceptEx でも同じことが起こります (WSAEINVAL など、別のエラーが返されます)。

IOCP イベントは、保留中の操作 (エラー コード WSA_IO_PENDING が返された) に対してのみスケジュールされ、他のエラーに対してはスケジュールされないと予想していました。

EDIT :私の質問は、DisconnectEx/AcceptEx の呼び出しが WSA_IO_PENDING ではないエラー (WSAGetLastError) を返した場合でも、システムによって IOCP イベントをスケジュールできますか?

ありがとうございました!

4

2 に答える 2

0

上記の質問に対する答えはノーです。私が抱えていた問題は、同じオーバーラップした構造でいくつかのIOCPイベントをスケジュールするのを台無しにして、この奇妙な動作を引き起こしたことです。

于 2012-12-28T16:50:07.983 に答える