如果我编写了一个使用IO完成端口来使用非阻塞套接字进行多路复用的程序,那么当getQueuedCompletionStatus返回时,我如何知道在套接字上执行的函数是send还是recv?
提前感谢:)
发布于 2012-08-19 16:24:57
您将收到一个指向用于该操作的重叠结构的指针。只需创建包含重叠结构的另一个结构,这样当您在完成状态中获得重叠结构时,您可以将其转换为您的结构:
struct MyOverlapped
{
OVERLAPPED SystemOverlapped;
int MyStuff;
void* MoreStuffForMe;
};显然,您只需将接收到的OVERLAPPED*转换为MyOverlapped*即可到达您的字段。你在你的田里投入了什么取决于你自己。
编辑: C++继承也应该起作用,所以你也可以这样做
struct MyOverlapped : public OVERLAPPED
{
...
};发布于 2012-08-19 08:07:19
哦,我不知道。在初始化ReadFileEx,WriteFileEx调用中传入的buffer结构中放入一个布尔值。诸如此类的事情。
https://stackoverflow.com/questions/12023052
复制相似问题