当前位置:  开发笔记 > 编程语言 > 正文

在C#中打开到文件描述符的管道连接

如何解决《在C#中打开到文件描述符的管道连接》经验,为你挑选了1个好方法。

我有一个旧版应用程序,它从文件描述符3的客户端程序中读取消息。这是一个外部应用程序,因此无法更改。客户端是用C#编写的。我们如何在C#中打开到特定文件描述符的连接?我们可以使用AnonymousPipeClientStream()之类的东西吗?但是,我们如何指定要连接的文件描述符?



1> Tamas Czineg..:

不幸的是,如果不先P /调用本机Windows API,就无法做到这一点。

首先,您将需要通过本地P / Invoke调用打开文件描述符。这是通过OpenFileById WINAPI函数完成的。这是在MSDN 上使用它的方法,这是在MSDN论坛上详细解释它的另一个链接,这是有关如何构造P / Invoke调用的帮助(pinvoke.net)。

获得文件句柄后,需要将其包装在SafeFileHandle中,这次是在安全的托管C#中:

// nativeHandle is the WINAPI handle you have acquired with the P/Invoke call
SafeFileHandle safeHandle = new SafeFileHandle(nativeHandle, true);

现在,您可以直接打开文件流:

Stream stream = new FileStream(safeHandle, FileAccess.ReadWrite);

从这一点出发,您可以将其用作C#中的任何其他文件或流。完成操作后,不要忘记处理对象。

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有