CA2149: Transparent methods must not call into native code
Visual Studio 2010
TypeName | TransparentMethodsMustNotCallNativeCode |
CheckId | CA2149 |
Category | Microsoft.Security |
Breaking Change | Breaking |
This rule fires on any transparent method which calls directly into native code, for example, through a P/Invoke. Violations of this rule lead to a MethodAccessException in the level 2 transparency model, and a full demand for UnmanagedCode in the level 1 transparency model.
To fix a violation of this rule, mark the method that calls the native code with the SecurityCriticalAttribute or SecuritySafeCriticalAttribute attribute.
using System; using System.Runtime.InteropServices; namespace TransparencyWarningsDemo { public class CallNativeCodeClass { [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool Beep(uint dwFreq, uint dwDuration); public void CallNativeMethod() { // CA2149 violation - transparent method calling native code Beep(10000, 1); } } }