.NET可移植性警告:CA1901 PInvoke声明应该是可移植的

时间:2011-07-21 23:30:30

标签: .net pinvoke code-analysis portable-applications

当我在代码中添加以下行时

[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo);

并针对 Microsoft Basic Correctness Rules 运行代码分析,我收到CA1901警告。 基本上,它抱怨第4个参数 int extraInfo 在32位平台上正常工作,但64位平台上预计会有64位整数类型。

当我将代码修改为 long extraInfo 时,满足64位平台要求,但32位平台需要32位整数。

如何在不抑制警告的情况下解决这一难题?

1 个答案:

答案 0 :(得分:4)

使用IntPtr,它是一种特定于平台的类型,用于表示指针或句柄:

[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, IntPtr extraInfo);