1

我在示例中使用了 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 字节宽。

那么我们如何解决上述 FxCop 警告,还请建议我们如何知道基于 32 位和 64 位平台的参数的实际大小?

4

1 回答 1

2

您应该使用以下声明:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
于 2017-08-04T21:35:34.127 回答