为什么GetQueuedCompletionStatus()不返回操作类型?

时间:2015-02-25 18:32:04

标签: c++ sockets winapi network-programming overlapped-io

GetQueuedCompletionStatus()将完成通知出列,但它不会返回通知类型(例如,阅读通知,写入通知)。

我有责任跟踪我发起的操作,例如当我使用WSARecv()时,我在OVERLAPPED结构中添加一个标志,指示这是什么操作(在这种情况下读取) ),当我将通知出列时,我读到了这个标志。那么有谁知道为什么GetQueuedCompletionStatus()不返回操作类型?

1 个答案:

答案 0 :(得分:1)

为什么要关心?您可以通过API传递用户数据,导致通过GetQueuedCompletionStatus()提取完成,那么为什么还需要其他内容?由于您可以使用PostQueuedCompletionStatus()发布自己的完成情况,因此无数次'操作'你可以完成,所以在扩展的OVERLAPPED结构中传递它,你可以传递任何东西......

如果您可以通过自己单独的标记,那么它实际上不会将额外的额外内容作为扩展OVERLAPPED结构传递,因为它能够通过数据缓冲区和其他信息以及操作无论如何,所以一个额外的标志不太可能值得...我的设计需要的不仅仅是你的设计需要,所以我们只需要处理API设计者给我们的方法...... < / p>