C# 坏掉的windows管道 目前使用管道进行进程间的通信,其中一个在C++中,另一个在C.NET应用程序中。我的.NET应用程序通过管道向我的C++应用程序发送长用户输入的Lua脚本。然而,当发送时,我的脚本都出了问题。脚本块位于不同的位置。这很奇怪,因为我用一个ReadFile调用读取了整个脚本

C# 坏掉的windows管道 目前使用管道进行进程间的通信,其中一个在C++中,另一个在C.NET应用程序中。我的.NET应用程序通过管道向我的C++应用程序发送长用户输入的Lua脚本。然而,当发送时,我的脚本都出了问题。脚本块位于不同的位置。这很奇怪,因为我用一个ReadFile调用读取了整个脚本,c#,c++,.net,ipc,named-pipes,C#,C++,.net,Ipc,Named Pipes,我这边: 我不会把我的C++代码从管道中读取,但是我在这里定义管道:< /P> HANDLE Pipe = CreateNamedPipe("\\\\.\\pipe\\TestPipe", PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 999999, 999999, NMPWAIT_USE_DEFAULT_WAIT, NULL); 我是否遗漏

我这边:

<>我不会把我的C++代码从管道中读取,但是我在这里定义管道:< /P>
HANDLE Pipe = CreateNamedPipe("\\\\.\\pipe\\TestPipe",
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
999999,
999999,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
我是否遗漏了一些明显的东西,导致对管道的写入变得半损坏


任何帮助都将不胜感激,非常感谢

PAGE\u READMODE\u BYTE修复了我的问题。

我猜您是在使用“readfile”从管道中读取……正如您指定的pipe\u READMODE\u消息,如果要读取的消息大于指定的字节数(nNumberOfBytesToRead参数),您可能会看到无序的内容,由于后续调用会分别读取消息的其余部分。@katamarayudu如何防止这种情况发生?您能否尝试增加ByteStoreAD的数量?@katamarayudu也非常感谢您提供的信息,因为我误解了PIPE_READMODE_消息的实际用途。好的。你试过管道读取模式吗?
HANDLE Pipe = CreateNamedPipe("\\\\.\\pipe\\TestPipe",
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
999999,
999999,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);