우리는 직렬 포트를 통해 두 개의 Hyper-V VM을 연결하려고합니다. Hyper-V는 직렬 포트를 명명 된 파이프로 호스트 시스템에 노출시키고 명명 된 파이프의 서버 끝을 구현합니다. 결과적으로 이들을 연결하려면 두 VM에 모두 연결되는 명명 된 파이프 클라이언트를 작성하고 데이터를 앞뒤로 복사해야합니다.Hyper-V : 명명 된 파이프를 통해 VM을 연결하면 데이터가 손실됩니다.
We have written such an application. 죄송합니다. 이 응용 프로그램은 데이터가입니다.
두 개의 하이퍼 링크를 연결하고 데이터를 교환하게되면 전송이 성공하는 경우가 있지만 대부분의 경우 수신 측에서 오류가 발생하거나 전송이 교착 상태 만보고합니다. 마찬가지로 링크를 사용하여 커널 디버거를 실행하면 자주 중단되는 것처럼 보입니다.
데이터 손실의 원인은 무엇입니까? 이러한 방식으로 명명 된 파이프를 연결할 때주의해야 할 사항은 무엇입니까?
: kdsrv.exe을 사용하여이 문제를 해결했습니다. 디버거의 COM 포트는 계속해서 명명 된 파이프를 통해 노출되지만 디버거 끝은 TCP를 통해 kdserv와 통신합니다.
제안 해 주셔서 감사합니다. 포워딩 스로틀 링은 약간의 도움이됩니다. 일반 "copy foo.txt COM1 :"은 이제 모든 데이터를 성공적으로 전송할 수 있습니다. 불행하게도 HyperTerm은 여전히 zmodem 통신에서 교착 상태이므로 여전히 데이터 손실이 있어야합니다. ResetEvent의 경우 : 구체적으로 어디에 누락 되었습니까? 비동기 IO는 ReadFile 및 WriteFile에서 이벤트를 올바르게 재설정하도록 정의됩니다. 내일 리셋 테스트 = 0. –
내 실수. ResetEvent는 필요 없습니다. – John
이 대답은 부분적으로 만 문제를 완전히 해결하지는 못합니다. 그래도 우리가 얻은 가장 좋은 답변이므로 현상금을 수여합니다. 문제 해결 방법에 대한 편집을 참조하십시오. –