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);
}
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für