CancelIo()对已经读取的字节做了什么?

时间:2009-08-06 13:30:28

标签: windows file-io cancelio

如果我ReadFile() 10个字节(在没有超时的重叠模式下)但在读取5个字节后调用CancelIo()会发生什么? CancelIo()的文档说它取消了任何挂起的I / O,但是已读取的5个字节会发生什么?他们丢了吗?他们是否重新入队,所以下次我ReadFile()我会再次获得它们?

我正在寻找规范以表明这种或那种方式。我不想依赖经验证据。

2 个答案:

答案 0 :(得分:3)

根据http://groups.google.ca/group/microsoft.public.win32.programmer.kernel/browse_thread/thread/4fded0ac7e4ecfb4?hl=en

  

这取决于驱动程序编写器如何实现设备。最正确   取消操作的语义未定义到该级别。

答案 1 :(得分:-1)

要么使用重叠I / O无关紧要,要么在知道取消I / O后手动调用SetFilePointer

如果您只是强行解决问题,则不必依赖未记录的行为。