如何解决CA1901-P / Invoke声明应该是可移植的FxCop警告?

时间:2017-08-04 05:03:40

标签: c# windows fxcop platform-specific

我在我的示例中使用了SendMessage本机方法。请在下面找到原生方法声明,

[DllImport("user32.dll", CharSet = CharSet.Auto)] 

internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

但是当我在我的示例中声明上面的本机方法时,它会显示警告(CA1901-P / Invoke声明应该是可移植的)。它显示警告,例如“方法中的参数lParam在64位平台上将是4字节宽。这是不正确的,因为此API的实际本机声明表明它应该在64位平台上宽8字节。” p>

那么我们如何才能解决上面这个FxCop警告问题,并请建议我们如何根据32位和64位平台知道参数的实际大小?

1 个答案:

答案 0 :(得分:1)

您应该使用以下声明:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);