我在我的示例中使用了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位平台知道参数的实际大小?
答案 0 :(得分:1)
您应该使用以下声明:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);