Именованный канал в VB6: CallNamedPipe () завершился ошибкой 87 - PullRequest
0 голосов
/ 25 мая 2011

Я использую CallNamedPipe () в VB6 для отправки сообщений на сервер именованных каналов 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 голосов
/ 25 мая 2011

Согласно документации , канал находится в байтовом режиме, когда вы используете этот конструктор. Я не знаю много о вызовах не-.NET-каналов, но не вижу причин, почему бы не устанавливать сервер в режим сообщений, если это нужно VB6.

...