【发布时间】:2015-02-24 15:01:38
【问题描述】:
当我调用WSASend() 或WSARecv() 或AcceptEx() 时,将在完成端口中放置一个完成数据包,我可以使用GetQueuedCompletionStatus() 将其出列。但是我怎么知道这个完成包代表什么操作呢?
【问题讨论】:
-
比较您从
GetQueuedCompletionStatus获得的LPOVERLAPPED指针与您传递给WSASend等的指针。您还可以在结构的末尾添加其他成员,以存储额外的信息。 -
所以我可以在结构的末尾添加一个
char成员来保存这是什么类型的操作,例如:'S'、'R'、'A'? (这似乎比比较指针更好!) -
@user4592590:是的,完全正确。 Raymond Chen 在他的博客上描述了该功能:The OVERLAPPED associated with asynchronous I/O is passed by address, and you can take advantage of that
标签: c++ sockets winapi network-programming iocp