我调用该方法win32::WriteFile
然后我打电话
WaitForSingleObject( handle, INFINITE )
与我在中使用的相同手柄WriteFile
call.
是否可以有某种场景让我永远等待……然后WriteFile
不会完成他的写作吗?我将写入 512 kB,并且假设我的硬件没有问题。
我期望得到FAIL
而不是永远等待。
当您进行重叠的 I/O 调用时,您将责任委托给驱动程序以确保它及时完成。如果驱动程序有错误或硬件出现故障,您将无能为力,当此类低级操作失败时,任何程序都无法继续以有用的方式运行。
请注意,您已经传递了一个指向驱动程序应该填充的缓冲区的指针,超时到期后继续运行会留下一个悬空指针,驱动程序会使用该指针may当进程确实成功完成请求时,用于将字节喷射到进程中。您至少必须调用 CancelIo() 来解决这个问题。如果返回 false 则终止进程。
这一切都没有意义,你需要操作系统提供最低限度的服务保证。您也可以在不使用 OVERLAPPED 的情况下调用 WriteFile()。同样的错误驱动程序现在将挂起您的程序。正如 CancelIo() 不太可能挂起一样。没关系,有问题的是司机,而不是你。用户并不是不会注意到机器出现了严重的问题,其他程序也会遭受这种不幸。
不要编写处理极不可能的极端情况的代码。最重要的是,不要编写无法有效测试的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)