Предупреждение о переносимости .NET: объявления PInvoke CA1901 должны быть переносимы

Когда я добавляю следующие строки в свой код

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

и запускаю анализ кода на соответствие правилам правильности Microsoft Basic , я получаю предупреждение CA1901. По сути, он жалуется, что 4-й параметр int extraInfo отлично работает на 32-битной платформе, но 64-битный целочисленный тип ожидается на 64-битной платформе.

Когда я изменил код на long extraInfo , требование 64-битной платформы выполнено, но 32-битная платформа ожидает 32-битное целое число.

Как решить эту дилемму, не подавляя предупреждение?

6
задан Jacob 21 July 2011 в 23:30
поделиться