【发布时间】:2019-02-05 15:14:21
【问题描述】:
我从未在 C# 中创建过 P/Invoke 包装器方法,因为有一种方法可以使用 .NET Framework 类“托管方式”。
但是,我需要调用 Win32 API 函数,我发现它并不像我想象的那么容易。
IsWowProcess2 中的函数,以及从 C++ 调用它的代码如下所示。
我创建了一个愚蠢的程序来测试它,但是当然它不起作用:
class Program
{
static void Main(string[] args)
{
var result = IsWowProcess2();
}
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = false, PreserveSig = true)]
private static extern MyStruct IsWowProcess2();
}
internal class MyStruct
{
public ushort One { get; set; }
public ushort Two { get; set; }
}
创建包装器方法的正确方法是什么以及如何调用它?
【问题讨论】:
-
如果您使用的是框架的最新版本(特别是 4.7.1 或更高版本,或 .NET Core),则可能不需要此功能,您可以通过
RuntimeInformation获得所需内容.
标签: c# .net windows winapi pinvoke