我有一个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上运行。
答案 0 :(得分:1)
您可以使用GetStdHandle获取标准输入(STD_INPUT_HANDLE),输出(STD_OUTPUT_HANDLE)和错误(STD_ERROR_HANDLE)文件的句柄。
然后您可以使用WriteFile,ReadFile函数来读写这些文件。
之后,如果仍然需要FILE结构,请按照以下步骤创建一个。