2011-07-21 6 views
6

Al agregar las siguientes líneas en mi código.NET Portabilidad Advertencia: Declaraciones CA1901 PInvoke debe ser portátil

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

y ejecutar un análisis de código de Microsoft contra las Reglas Básicas de exactitud, recibo una advertencia CA1901. Básicamente, se queja el cuarto parámetro intExtraInfo funciona bien en una plataforma de 32 bits, pero se espera un tipo entero de 64 bits en la plataforma de 64 bits.

Cuando he modificado el código en largoExtraInfo, el requisito de plataforma de 64 bits se cumple pero la plataforma de 32 bits está esperando un entero de 32 bits.

¿Cómo resolver este dilema sin suprimir la advertencia?

Respuesta

4

Mediante el uso de un IntPtr que es un tipo específico de la plataforma que se usa para representar un puntero o un mango:

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