Freigeben über


CA2149: Transparente Methoden dürfen keine Aufrufe in nativen Code durchführen.

Element Wert
RuleId CA2149
Category Microsoft.Security
Unterbrechende Änderung Breaking

Ursache

Eine Methode ruft eine native Funktion über einen Methodenstub auf, z. B. „P/Invoke“.

Hinweis

Diese Regel wurde als veraltet markiert. Weitere Informationen finden Sie unter Veraltete Regeln.

Regelbeschreibung

Diese Regel wird für jede transparente Methode ausgelöst, die einen direkten Aufruf in nativem Code ausführt, z. B. mit „P/Invoke“. Verstöße gegen diese Regel führen im Transparenzmodell der Ebene 2 zu einer MethodAccessException und im Transparenzmodell der Ebene 1 zu einer vollständigen Anforderung für UnmanagedCode.

Behandeln von Verstößen

Um Verstöße gegen diese Regel zu beheben, markieren Sie die Methode, die den nativen Code aufruft, mit dem Attribut SecurityCriticalAttribute oder SecuritySafeCriticalAttribute.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

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

}