Freigeben über


CA1401: P/Invokes dürfen nicht sichtbar sein

TypeName

PInvokesShouldNotBeVisible

CheckId

CA1401

Kategorie

Microsoft.Interoperability

Unterbrechende Änderung

Breaking

Ursache

Eine öffentliche oder geschützte Methode in einem öffentlichen Typ enthält das System.Runtime.InteropServices.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);
    }
}