1

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

我正在寻找说明一种或另一种方式的规范。我不想依赖经验证据。

4

2 回答 2

3

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

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

于 2009-08-07T18:55:15.957 回答
-1

要么没关系,因为您使用的是重叠 I/O,要么您可以SetFilePointer在知道已取消 I/O 时手动调用。

如果您只是强迫问题,则不必依赖无证行为。

于 2009-08-19T05:38:09.150 回答