Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA1401 |
| Název | Volání nespravovaných kódů by neměla být viditelná |
| Kategorie | Vzájemná funkční spolupráce |
| Oprava způsobující chybu nebo chybu způsobující chybu | Narušující |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
Příčina
Veřejná nebo chráněná metoda ve veřejném typu má System.Runtime.InteropServices.DllImportAttribute atribut (implementovaný také klíčovým slovem Declare v jazyce Visual Basic).
Popis pravidla
Metody označené atributem DllImportAttribute (nebo metodami definovanými pomocí klíčového Declare slova v jazyce Visual Basic) používají službu volání platformy pro přístup k nespravovanému kódu. Tyto metody by neměly být vystaveny. Když tyto metody zachováte jako soukromé nebo interní, ujistěte se, že knihovnu nelze použít k narušení zabezpečení tím, že volajícím povolíte přístup k nespravovaným rozhraním API, která by jinak nemohla volat.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, změňte úroveň přístupu metody.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad
Následující příklad deklaruje metodu, která porušuje toto pravidlo.
// Violates rule: PInvokesShouldNotBeVisible.
public class NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool RemoveDirectory(string name);
}
Imports System
Namespace ca1401
' Violates rule: PInvokesShouldNotBeVisible.
Public Class NativeMethods
Public Declare Function RemoveDirectory Lib "kernel32" (
ByVal Name As String) As Boolean
End Class
End Namespace