Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
CA2149: Transparent methods must not call into native code
Collapse the table of content
Expand the table of content

CA2149: Transparent methods must not call into native code







Breaking Change


A method calls a native function through a method stub such as P/Invoke.

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.

Do not suppress a warning from this rule.

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);

© 2015 Microsoft