.NET 可移植性警告:CA1901 PInvoke 声明应该是可移植的
当我将以下行添加到代码中
[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo);
并根据 Microsoft 基本正确性规则运行代码分析时,我收到 CA1901 警告。 基本上,它抱怨第四个参数 int extraInfo 在 32 位平台上工作正常,但在 64 位平台上需要 64 位整数类型。
当我将代码修改为 long extraInfo 时,满足了 64 位平台要求,但 32 位平台需要 32 位整数。
如何在不抑制警告的情况下解决这个困境?
When I add the following lines into my code
[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo);
and run a code analysis against Microsoft Basic Correctness Rules, I get a CA1901 warning.
Basically, it complains the 4th parameter int extraInfo works fine on a 32-bit platform but a 64-bit integer type is expected on 64-bit platform.
When I modified the code into long extraInfo, the 64-bit platform requirement is met but the 32-bit platform is expecting a 32-bit integer.
How to solve this dilemma without suppressing the warning?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过使用 IntPtr 这是特定于平台的类型用于表示指针或句柄:
By using an IntPtr which is a platform-specific type that is used to represent a pointer or a handle: