如何知道一个完成数据包是用于 WSASend() 或 WSARecv() 还是 AcceptEx()?

How to know if a completion packet is for WSASend() or WSARecv() or AcceptEx()?

当我调用WSASend()WSARecv()AcceptEx()时,一个完成数据包将被放置在完成端口中,我可以使用GetQueuedCompletionStatus()将其出队。但是我怎么知道这个完成包代表什么操作呢?

您使用了包含其他信息的 'extended' OVERLAPPED 结构。通常这还包含数据缓冲区和一些标志,这些标志告诉 GetQueuedCompletionStatus() 的调用者完成类型是什么。

网上有很多关于 IOCP 的有用教程,我希望他们都能解释这一点,因为它非常基础。可以找到我的教程 here,以及一些实现一些简单 IOCP 服务器的代码。