WriteFileEx
的MSDN页面表示它不能在IOCP模型中使用,因为它有一个参数来指定完成例程。如果文件句柄已与I / O完成端口关联,则WriteFileEx
将失败。
但是,WSASend
允许调用者将完成例程指定为其最后一个参数,而此函数可以在IOCP模型中使用。
我用IOCP检查了几个WinSock的例子,发现最后一个参数lpCompletionRoutine
总是为空。这是强制性的吗?
答案 0 :(得分:1)
文档中唯一说的是:
完成例程遵循与Windows文件I / O完成例程相同的规则。
这可能表明您不能将IOCP和lpCompletionRoutine
混合在一起,就像使用WriteFileEx()
一样。另一方面,为什么你想要首先将它们混合在一起?完成端口获取结果,或完成例程。为什么你需要同时使用它们?