c # - Sådan løses CA1901 - P/Invoke erklæringer skal være bærbare FxCop advarsel?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg brugte den native SendMessage-metode i min stikprøve. Find venligst den nederlandske metodeerklæring nedenfor,


[DllImport("user32.dll", CharSet = CharSet.Auto)] 

internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);


Men når man erklærer ovennævnte indfødte metode i min prøve, viser den advarslen (CA1901 - P/Invoke erklæringer skal være bærbare). Det viser advarslen som: 'Parameteren lParam i metode vil være 4 bytes bred på 64-bit platforme. Dette er ikke korrekt, da den egentlige indfødte erklæring for denne API angiver, at den skal være 8 bytes bred på 64-bit platforme.


Så hvordan kan vi løse denne ovenstående FxCop advarsel, og foreslå også, hvordan vi kan kende den faktiske størrelse af parameteren baseret på 32 bit og 64 bit platforme?

Bedste reference


Du skal bruge følgende erklæring:


[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);