【发布时间】:2017-03-11 23:46:09
【问题描述】:
当我在 Win32 api 上以 OVERLAPPED 方式打开和读取文件时,我有几种方法来完成 IO 请求,包括使用等待文件句柄(或重叠结构中的事件)
-
WaitForSingleObject -
GetOverlappedResult与 bWait=TRUE
这两个函数似乎具有相同的效果:线程停止直到处理或事件发出信号,这意味着数据被放置在提供给ReadFile的缓冲区中。
那么,有什么区别呢?为什么我需要GetOverlappedResult?
【问题讨论】:
-
短版:
WaitForSingleObject不会告诉你操作是成功还是失败,如果它碰巧是那种处理的字节数比你要求的少的 I/O,你也不知道。