c++ - 如果未使用 CloseHandle 正确关闭,则重新打开串行端口会失败

标签 c++ windows serial-port createfile

我在 Windows 上使用被视为虚拟串行端口的 USB 设备。我可以使用 CreateFile 和 ReadFile 函数与设备通信,但在某些情况下,我的应用程序不会调用 CloseHandle(当我的开发应用程序崩溃时)。之后所有对 CreateFile 的调用都失败(ERROR_ACCESS_DENIED),唯一的解决办法是重新登录我的电脑。有没有办法以编程方式强制关闭打开的句柄(或重新打开)?

最佳答案

这当然不正常。 Windows 会在进程终止后自动关闭所有保持打开状态的句柄。这一定是您的 USB 设备驱动程序中的一个缺陷,尽管很难看出它是如何搞砸的。然而,模拟串行端口的那些是出了名的糟糕。好吧,您无能为力,只能希望制造商提供驱动程序更新。或者来自其他制造商的设备。

关于c++ - 如果未使用 CloseHandle 正确关闭,则重新打开串行端口会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948428/

相关文章:

c++ - 请问支持 MingW32 的免费分析器好吗?

iphone - 在哪里可以找到为 iPhone 新手构建简单 OpenGL 应用程序的教程?

c - Termios.h 串行通信。检查设备是否断开

C# 检查 COM(串行)端口是否已经打开

c++ - gcc 不接受默认模板参数中的包扩展

c++ - 在没有 move 构造函数的情况下返回不可复制对象的解决方法

c++ - C++中用于实时语音转换器系统的库?

c++ - Win32 Api 将 2 字母(中性)标识符转换为语言

c++ - 使用 select() 进行非阻塞串行

c++ - 如何将 webrtc 原生 api 添加到我的 qt 项目中?