如果在IOCP模型中指定了WSASend的lpCompletionRoutine怎么办?

时间:2013-01-24 13:21:11

标签: c asynchronous tcp winsock iocp

WriteFileEx的MSDN页面表示它不能在IOCP模型中使用,因为它有一个参数来指定完成例程。如果文件句柄已与I / O完成端口关联,则WriteFileEx将失败。

但是,WSASend允许调用者将完成例程指定为其最后一个参数,而此函数可以在IOCP模型中使用。

我用IOCP检查了几个WinSock的例子,发现最后一个参数lpCompletionRoutine总是为空。这是强制性的吗?

1 个答案:

答案 0 :(得分:1)

文档中唯一说的是:

  

完成例程遵循与Windows文件I / O完成例程相同的规则。

这可能表明您不能将IOCP和lpCompletionRoutine混合在一起,就像使用WriteFileEx()一样。另一方面,为什么你想要首先将它们混合在一起?完成端口获取结果,或完成例程。为什么你需要同时使用它们?