繁体   English   中英

使用C#,如何连接到单向的C ++命名管道?

[英]Using C#, how do you connect to a C++ Named Pipe that is mono-directional?

我在C ++程序Server创建了一个命名管道,我想在C#应用程序Client连接到它。 我用C ++编写了一些测试代码,并且可以将其写到管道中。 我遇到的问题是获取C#代码写入命名管道。 现在,它引发了System.UnauthorizedAccessException' occurred in System.Core.dll异常中System.UnauthorizedAccessException' occurred in System.Core.dllSystem.UnauthorizedAccessException' occurred in System.Core.dll 这两个程序都以admin身份在Visual Studio中运行,我的设置是否错误?

C ++服务器

pipe_handle = CreateNamedPipe("\\\\.\\pipe\\StackPipe",                     // Name of Pipe
                              PIPE_ACCESS_INBOUND,          // Direction of Pipe
                              PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT, // Pipe Mode
                              1,                                // Maximum instances
                              0,                                // Output Buffer Size
                              (BUFFER_MAX*sizeof(_TCHAR)),  // Input Buffer Size
                              NMPWAIT_USE_DEFAULT_WAIT,     // Default Time Out
                              NULL);                            // Security Attributes - Admin and System 

C ++测试客户端

WaitNamedPipe(L"\\\\.\\pipe\\StackPipe", NMPWAIT_WAIT_FOREVER);
HANDLE hpipe = CreateFile(  L"\\\\.\\pipe\\StackPipe", //Formatting is different
                            GENERIC_WRITE,
                            0,
                            NULL, 
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL,
                            NULL);

C#客户端

NamedPipeClientStream pipeClient = 
        new NamedPipeClientStream(  ".",
                                    "StackPipe",
                                    PipeDirection.In,
                                    PipeOptions.Asynchronous,                                           TokenImpersonationLevel.Identification);
pipeClient.Connect(); //Fails Here

感谢@Harry Johnston,我误读了方向:

NamedPipeClientStream pipeClient = 
            new NamedPipeClientStream(  ".",
                                        "StackPipe",
                                        PipeDirection.Out, // Change Direction
                                        PipeOptions.Asynchronous);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM