在串行端口上写入错误112(磁盘已满)意味着什么?

时间:2012-10-18 10:59:53

标签: c++ windows winapi serial-port citrix

写入Windows计算机上的串行端口(COM1)时出现写入错误。返回的错误是112(DISK_FULL)。由于这是一个串口,我没有得到错误的含义。

缓冲区是否已满?我不这么认为,因为我在打开端口后发送的第一个请求上收到错误。

1 个答案:

答案 0 :(得分:3)

这样的I / O错误是由设备驱动程序生成的。这些天很少是Microsoft提供的标准Windows串行端口驱动程序,它只适用于真正的串行端口硬件。串行端口通常由使用自定义硬件实现通信的设备驱动程序模拟。例如蓝牙和USB。但事情就好了。

设备制造商很方便,因为他们不必提供允许您在自己的代码中使用设备的自定义DLL。通过模拟串行端口,您只需使用标准的winapi功能与设备通信即可。

但就目前而言,核心问题是你实际上并没有使用串口硬件。另一个是这些设备制造商不擅长编写自定义驱动程序。特别是USB驱动器因其质量差而臭名昭着。完全没有用的是串行端口不支持即插即用,它们太原始而不支持设备发现。如此简单的事情,例如发现哪个端口号连接到设备以及处理在设备使用时断开设备是严重的障碍。

当然,“磁盘已满”错误代码并不意味着什么。设备驱动程序编写器针对某种特定于设备的错误条件获取了错误代码。找出错误真正含义的唯一方法是询问供应商。