我们试图通过串行端口连接两个Hyper-V虚拟机。 Hyper-V将串行端口公开为主机系统的命名管道,并实现命名管道的服务器端。因此,为了连接它们,我们需要编写一个连接到两个虚拟机的命名管道客户机,并将数据来回复制。Hyper-V:通过命名管道连接虚拟机丢失数据
We have written such an application。不幸的是,这个应用程序丢失数据。
如果我们连接两个超类,并让它们交换数据,传输有时会成功,但在很多情况下,接收端会报告错误,或者传输只是死锁。同样,如果我们使用链接来运行内核调试器,它也似乎经常挂起。
数据丢失的原因是什么?以这种方式连接命名管道时必须采取哪些预防措施?
编辑:我们已经解决了这个问题,使用kdsrv.exe。调试对象的COM端口继续通过命名管道暴露,但调试端通过TCP与kdserv通信。
感谢您的建议。限制转发有一点帮助;一个普通的“复制foo.txt COM1:”现在可以成功传输所有数据。不幸的是,HyperTerm在zmodem通信中仍然存在死锁,所以仍然有数据丢失的地方。至于ResetEvent:特别是缺少的地方?异步IO定义为在ReadFile和WriteFile中正确重置事件。明天测试重置= 0。 –
我的错误。不需要重置事件。 – John
此答案不能完全解决问题,只能部分解决。尽管如此,这是我们得到的最好答案,所以我将奖励给予奖励。查看我的编辑,了解我们如何解决问题。 –