在C#中打开与文件描述符的管道连接
作者:互联网
我有一个遗留应用程序,它从文件描述符3中读取来自客户端程序的消息.这是一个外部应用程序,所以我无法改变它.客户端是用C#编写的.我们如何在C#中打开与特定文件描述符的连接?我们可以使用像AnonymousPipeClientStream()这样的东西吗?但是我们如何指定要连接的文件描述符?
解决方法:
不幸的是,如果没有P /调用本机Windows API,您将无法做到这一点.
首先,您需要使用本机P / Invoke调用打开文件描述符.这是由OpenFileById WINAPI函数完成的. 07DN在MSDN上,here’s an other link在MSDN论坛上详细解释,here’s some help (pinvoke.net)在如何构建P / Invoke调用.
获得文件句柄后,需要将其包装在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#中的任何其他文件或流.一旦完成,不要忘记丢弃物品.
标签:c,net,pinvoke,winapi,file-descriptor 来源: https://codeday.me/bug/20190701/1345271.html