如果我编写了一个使用IO完成端口来使用非阻塞套接字进行多路复用的程序,那么当getQueuedCompletionStatus返回时,如何知道套接字上执行的函数是send还是recv?
提前致谢:)
答案 0 :(得分:3)
您正在接收指向用于该操作的OVERLAPPED结构的指针。只需创建包含OVERLAPPED结构的另一个结构,因此当您在完成状态中获得OVERLAPPED时,可以将其转换为您的结构:
struct MyOverlapped
{
OVERLAPPED SystemOverlapped;
int MyStuff;
void* MoreStuffForMe;
};
显然,您只需将收到的OVERLAPPED *转换为MyOverlapped *即可到达您的字段。你在田里放什么取决于你。
编辑:C ++继承也应该有用,所以你也可以做
struct MyOverlapped : public OVERLAPPED
{
...
};
答案 1 :(得分:-1)
哦,我不知道。在启动ReadFileEx,WriteFileEx调用中传入的缓冲区结构中放置一个布尔值。像那样......