2

次のような関数を使用して、C コードで C パイプを作成しています。

extern int *create_pipe() {
  int *_pipe = (int *)malloc(2 * sizeof(int));
  pipe(_pipe);

  return _pipe;
}

次のように、C# でこの関数にバインドしています。

[DllImport("mydll")]
private static unsafe extern int *create_pipe();

C# コードを次のように呼び出します。

unsafe {
  int *pipe = create_pipe();

  hostout = pipe[1];
  hostin = pipe[0];
}

BinaryWriter次に、次のようにパイプへのを作成しようとします。

var writer = new BinaryWriter(new AnonymousPipeClientStream(PipeDirection.Out, new SafePipeHandle(new IntPtr(hostout), false)));

そして、単純な整数値をそれに書き込もうとします:

writer.Write(50);

しかし、私はこのエラーが発生します:

Unhandled Exception:
System.IO.IOException: Invalid handle to path "[Unknown]"
  at System.IO.FileStream..ctor (IntPtr handle, FileAccess access, Boolean ownsHandle, Int32 bufferSize, Boolean isAsync, Boolean isZeroSize) [0x0006a] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/corlib/System.IO/FileStream.cs:86 
  at System.IO.FileStream..ctor (IntPtr handle, FileAccess access, Boolean ownsHandle, Int32 bufferSize, Boolean isAsync) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (intptr,System.IO.FileAccess,bool,int,bool)
  at System.IO.Pipes.PipeStream.get_Stream () [0x00021] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/PipeStream.cs:134 
  at System.IO.Pipes.PipeStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00006] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/PipeStream.cs:273 
  at System.IO.BinaryWriter.Write (Int32 value) [0x0004b] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/corlib/System.IO/BinaryWriter.cs:244

私がやろうとしていることを達成する方法はありますか?

前もって感謝します!

4

0 に答える 0