如果I ReadFile() 10个字节(在重叠模式下没有超时),但在读取5个字节后调用CancelIo(),会发生什么?CancelIo()的文档说它取消了任何挂起的I/O,但是已经读取的5个字节发生了什么呢?他们迷路了吗?它们是否重新排队,以便下次我ReadFile()时,我将再次获得它们?
我正在寻找这样或那样的规格说明。我不想依赖经验证据。
发布于 2009-08-07 18:55:16
这取决于驱动程序编写器如何实现设备。在操作上取消的确切语义没有定义到该级别。
发布于 2009-08-19 05:38:09
这并不重要,因为您正在使用重叠的I/O,或者当您知道已取消I/O时,可以手动调用SetFilePointer。
如果您只是强制执行该问题,则不必依赖于未记录的行为。
https://stackoverflow.com/questions/1238905
复制相似问题