失败的disconnectex/acceptex仍计划一个重叠的IOCP事件



Windows 8,x64。

与IOCP一起使用重叠的Windows插座API

注意到插座的意外行为:例如,对DiSconnectEx的调用返回错误WSAENOTCONN,但后来我在GetQuequeudCompletionStatusex中收到了一个事件,以确切地与此断开连接(就像返回错误一样,它仍然是安排的)。Accestex也发生了同样的情况(返回不同的错误,例如Wsaeinval)。

我期望仅针对未决操作安排IOCP事件(返回的错误代码WSA_IO_PENDEND),而不是其他错误。

edit :我的问题是:即使系统desconnectex/acceptex的呼叫返回错误(WSAGETLASTERROR),系统可以安排IOCP事件(即

谢谢!

iocps倾向于在看似奇怪的时期淹没您的状态,包括在您以为手柄关闭后...我使用的解决方案是用自定义做一个PastquecoudCompletionStatus()关闭手柄后,重叠的参数表示"现在关闭"。然后,将处理任何排队的系统状态,当我获得自定义重叠时,我知道我可以释放与手柄相关的所有内部缓冲区。

上述问题的答案是否。我遇到的问题是,我搞砸了在相同的重叠结构上安排几个IOCP事件,这导致了这种奇怪的行为。

最新更新