【问题标题】:What if lpCompletionRoutine of WSASend is specified in IOCP model?如果在 IOCP 模型中指定了 WSASend 的 lpCompletionRoutine 怎么办?
【发布时间】:2013-01-24 13:21:11
【问题描述】:

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

不过,WSASend 允许调用者指定完成例程作为其最后一个参数,而此函数可用于 IOCP 模型。

我检查了几个带有 IOCP 的 WinSock 示例,发现最后一个参数 lpCompletionRoutine 始终为空。这是强制性的吗?

【问题讨论】:

    标签: c asynchronous tcp winsock iocp


    【解决方案1】:

    文档中唯一说的是:

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

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

    【讨论】:

    • 我只是想知道为什么 MSDN 没有将这个问题明确记录为 WriteFileEx。
    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2023-03-09
    • 1970-01-01
    • 2011-06-14
    • 2012-08-01
    相关资源
    最近更新 更多