WriteFileEx的msdn页说,它不能在iocp模型中使用,因为它有一个参数来指定完成例程。如果文件句柄已与I/O完成端口关联,则WriteFileEx将失败。
但是,WSASend允许调用方指定一个完成例程作为其最后一个参数,而这个函数可以在iocp模型中使用。
我检查了几个带有iocp的winsock示例,发现最后一个参数lpCompletionRoutine总是空的。这是强制性的吗?

最佳答案

文件上唯一说的是:
完成例程遵循与windows文件i/o完成例程相同的规则。
这可能意味着您不能像使用lpCompletionRoutine那样将iocp和WriteFileEx()混合在一起。另一方面,你为什么一开始就想把它们混在一起?要么完成端口得到结果,要么完成例程得到结果。你为什么要两者都用?

10-04 13:20