CA1401: P/Invokes dürfen nicht sichtbar sein
TypeName |
PInvokesShouldNotBeVisible |
CheckId |
CA1401 |
Kategorie (Category) |
Microsoft.Interoperability |
Unterbrechende Änderung |
Breaking |
Ursache
Eine öffentliche oder geschützte Methode in einem öffentlichen Typ enthält das DllImportAttribute-Attribut (in Visual Basic auch durch das Declare-Schlüsselwort implementiert).
Regelbeschreibung
Methoden, die mit dem DllImportAttribute-Attribut gekennzeichnet sind (oder Methoden, die in Visual Basic mithilfe des Declare-Schlüsselworts definiert wurden), greifen über Plattformaufrufdienste (PInvokes) auf nicht verwalteten Code zu.Solche Methoden sollten nicht verfügbar gemacht werden.Wenn diese Methoden privat oder intern bleiben, stellen Sie sicher, dass die Bibliothek nicht für Sicherheitsverletzungen verwendet werden kann, indem sie Aufrufern den Zugriff auf unverwaltete APIs gestattet, die sonst nicht aufgerufen werden könnten.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Zugriffsebene der Methode.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Im folgenden Beispiel wird eine Methode deklariert, die gegen diese Regel verstößt.
Imports System
NameSpace MSInternalLibrary
' Violates rule: PInvokesShouldNotBeVisible.
Public Class NativeMethods
Public Declare Function RemoveDirectory Lib "kernel32"( _
ByVal Name As String) As Boolean
End Class
End NameSpace
using System;
using System.Runtime.InteropServices;
namespace InteroperabilityLibrary
{
// Violates rule: PInvokesShouldNotBeVisible.
public class NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool RemoveDirectory(string name);
}
}