WriteFile返回错误代码995
WriteFile returning error code 995
我已经搜索了stackoverflow并在谷歌上彻底搜索了这个问题,但没有找到为什么会发生这个问题的线索。
我正在用C++编写一个程序,该程序与通过USB连接的测量设备进行通信。该程序是多线程的,几个线程将与设备通信。互斥锁用于保证没有两个线程同时尝试从设备读取或写入。
使用WriteFile将命令发送到设备,使用ReadFile读取响应和测量值-这两个操作都是同步完成的。
有时,在从设备读取测量值时,由于测量设备内部的同步错误,测量会超时失败(GetLastError()返回错误代码121),这是可以预料的。
当我试图继续测量时,通过发送一个新命令,WriteFile有时(大约50%的时间)会失败,GetLastError()返回错误代码995,在MSDN中描述为:
错误操作中止
995 (0x3E3) The I/O operation has been aborted because of either a thread exit or an application request.
超时发生后不会有线程退出,也不会取消任何读取或写入操作。我只能通过使用CloseHandle和CreateFile关闭并重新打开与设备的通信来恢复通信。然而,这将需要一些时间进行测量,并且不是一个理想的解决方案。
我的问题是,在这种情况下,WriteFile为什么会返回错误代码995,我该怎么做才能避免关闭和重新打开与设备的通信?
请联系USB串行设备的OEM——我们无法进一步帮助您,因为我们无法访问驱动程序的管道。如果设备OEM无法帮助您,请联系USB串行芯片组的制造商;如果他们拒绝帮忙,就把USB到串行适配器扔进垃圾桶,买一个有制造商支持的芯片组(比如FTDI或Silicon Labs USB串行芯片),而不是一些廉价的克隆垃圾。
相关文章:
- 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- 从 C++ 调用 cURL 命令会返回意外的错误代码,如 1792 和 6656
- openCL-创建子缓冲区返回错误代码13
- 为什么我的代码返回了错误的平方值?C++
- 如何从构造函数返回错误代码?
- 如何使用 RAII 包装返回错误代码的 C 分配
- ChangeWindowMessageFilterEx() 返回错误代码 5
- Fibbonaci 递归代码返回错误值,始终返回下一个数字
- 为什么此代码返回分段错误错误?
- mmdevice API中的cocreateinstance返回错误代码0x800401f0
- Ubuntu E:子进程 /usr/bin/dpkg 返回错误代码 (1)
- 如何避免使用多个if-else来检查返回值是否为错误代码?
- SQLite 错误代码:sqlite_step() 返回 5 (SQLITE_BUSY)
- JNI 代码返回字符串,但得到错误 java.lang.UnsatisfiedLinkError: com.packag
- 使用Outlook 2016:MAPISendMail在Windows应用程序中失败,并返回"MAPI_E_FAILURE"作为错误代码
- 获取 Poco 返回的错误代码的文本
- GetProcAddress 在 c++ 中返回错误代码 127
- 尝试从资源加载位图返回NULL,错误代码为1813
- 开发人员在Dev C 中编译代码时,我会收到此错误:[错误] ID返回1退出状态
- C++错误处理-使用std::pair或std::tuple返回错误代码和函数返回的缺点