VB6中的命名管道:CallNamedPipe()失败,错误87

时间:2011-05-25 03:58:18

标签: vb6 message named-pipes

我在VB6中使用CallNamedPipe()将消息发送到C#命名管道服务器。 在服务器端,管道由:

创建
new NamedPipeServerStream(pipeName, PipeDirection.InOut, numThreads);

在客户端上,我使用此调用写入2个字节:

  Dim Header(1) As Byte
  Header(0) = 0
  Header(1) = 6
  res = CallNamedPipe(szPipeName, Header(0), 2, bArray(0), numBytes, cbRead, 3000)

服务器看到管道已连接,因为WaitForConnection()确实返回了,但后来无法读取任何字节。 在客户端:CallNamedPipe失败并返回错误代码87(无效参数?)

我的问题是:

  1. 管道是创建字节模式还是消息模式类型? MSDN表示,如果管道是字节模式,CallNamedPipe()将失败。

  2. 有没有办法在VB6中写入字节模式管道。我是否必须更改服务器代码才能创建消息模式管道?

  3. 如何让我的VB6代码正常工作?

1 个答案:

答案 0 :(得分:0)

根据the documentation,当您使用该构造函数时,管道处于字节模式。我不太了解非.NET管道调用,但如果VB6需要,我没有看到任何理由不将服务器设置为消息模式管道。