如果我编写了一个程序,该程序使用IO完成端口使用无阻塞套接字进行多路复用,那么当getQueuedCompletionStatus返回时,我如何知道在套接字上执行的函数是send还是recv?
提前致谢 :)
最佳答案
您将收到一个指向用于该操作的OVERLAPPED结构的指针。只需制作另一个包含OVERLAPPED结构的结构,因此当您以完成状态获得OVERLAPPED时,可以将其变成您的结构:
struct MyOverlapped
{
OVERLAPPED SystemOverlapped;
int MyStuff;
void* MoreStuffForMe;
};
显然,您只需将收到的OVERLAPPED *转换为MyOverlapped *即可进入您的字段。您在字段中输入的内容取决于您自己。
编辑:C++继承也应该工作,所以您也可以做
struct MyOverlapped : public OVERLAPPED
{
...
};