PInvoking stdin, stdout 和 stderr 到非托管 dll

PInvoking stdin, stdout and stderr to unmanaged dll

我有一个包含如下内容的 C 头文件:

void init(FILE* in, FILE* out, FILE* err);

我猜这等同于以下 PInvoke 签名:

[DllImportAttribute("mylib", EntryPoint = "init")]
public static extern void init(IntPtr @in, IntPtr @out, IntPtr err);

顺便说一句,我想调用这个方法。我能以某种方式从 Console.In、Console.Out、Console.Error 获取 IntPtr 吗?

它应该适用于 Linux 和 Windows,而不是 Windows。

您可以使用 GetStdHandle 获取标准输入 (STD_INPUT_HANDLE)、输出 (STD_OUTPUT_HANDLE) 和错误 (STD_ERROR_HANDLE) 文件的句柄。

然后您可以使用 WriteFile、ReadFile 函数写入和读取这些文件。

之后,如果您还需要 FILE 结构,请按照以下步骤创建一个。

How make FILE* from HANDLE in WinApi?