次のような関数を使用して、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
私がやろうとしていることを達成する方法はありますか?
前もって感謝します!