如果我ReadFile()
10个字节(在没有超时的重叠模式下)但在读取5个字节后调用CancelIo()
会发生什么? CancelIo()
的文档说它取消了任何挂起的I / O,但是已读取的5个字节会发生什么?他们丢了吗?他们是否重新入队,所以下次我ReadFile()
我会再次获得它们?
我正在寻找规范以表明这种或那种方式。我不想依赖经验证据。
答案 0 :(得分:3)
这取决于驱动程序编写器如何实现设备。最正确 取消操作的语义未定义到该级别。
答案 1 :(得分:-1)
要么使用重叠I / O无关紧要,要么在知道取消I / O后手动调用SetFilePointer
。
如果您只是强行解决问题,则不必依赖未记录的行为。