Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果我ReadFile()10 个字节(在没有超时的重叠模式下)但CancelIo()在读取 5 个字节后调用会发生什么?的文档CancelIo()说它取消了任何挂起的 I/O,但是已经读取的 5 个字节会发生什么?他们迷路了吗?他们是否重新排队,所以下次ReadFile()我会再次获得他们?
ReadFile()
CancelIo()
我正在寻找说明一种或另一种方式的规范。我不想依赖经验证据。
根据http://groups.google.ca/group/microsoft.public.win32.programmer.kernel/browse_thread/thread/4fded0ac7e4ecfb4?hl=en
这取决于驱动程序编写者如何实现设备。取消操作的确切语义未定义到该级别。
要么没关系,因为您使用的是重叠 I/O,要么您可以SetFilePointer在知道已取消 I/O 时手动调用。
SetFilePointer
如果您只是强迫问题,则不必依赖无证行为。