【发布时间】:2011-11-14 20:59:31
【问题描述】:
有没有办法在 Windows XP 中执行 ReadFile 超时?
如果没有,有没有办法将管道与其他线程断开?
【问题讨论】:
有没有办法在 Windows XP 中执行 ReadFile 超时?
如果没有,有没有办法将管道与其他线程断开?
【问题讨论】:
使用Overlapped I/O 设置异步ReadFile。然后,您可以随时使用CancelIOEx 取消读取。
【讨论】:
假设您在谈论命名管道,通常的方法是进行重叠读取,并在调用WaitForSingleObject(或WaitForMultipleObjects)时指定超时。当/如果超时到期,等待将返回WAIT_TIMEOUT 而不是WAIT_OBJECT_0。
【讨论】:
FILE_FLAG_OVERLAPPED,并在调用ReadFile 时传递OVERLAPPED 结构(或任何数量的其他可能性,例如ReadFileEx - Microsoft已经完成了几次重叠 I/O 的迭代)。