Partager via


CA2145 : Les méthodes transparentes ne doivent pas être décorées avec SuppressUnmanagedCodeSecurityAttribute

TypeName

TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity

CheckId

CA2145

Catégorie

Microsoft.Security

Modification avec rupture

Oui

Cause

Une méthode transparente, une méthode marquée avec la méthode SecuritySafeCriticalAttribute, ou un type qui contient une méthode est marquée avec l'attribut SuppressUnmanagedCodeSecurityAttribute.

Description de la règle

Les méthodes décorées avec l'attribut SuppressUnmanagedCodeSecurityAttribute ont un LinkDemand implicite placé sur toute méthode qui l'appelle.Ce LinkDemand requiert que le code appelant soit critique de sécurité.Le marquage de la méthode qui utilise SuppressUnmanagedCodeSecurity avec l'attribut SecurityCriticalAttribute rend cette spécification plus évidente pour les appelants de la méthode.

Comment corriger les violations

Pour résoudre une violation de cette règle, marquez la méthode ou le type avec l'attribut SecurityCriticalAttribute.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Dd997570.collapse_all(fr-fr,VS.110).gifCode

using System;
using System.Runtime.InteropServices;
using System.Security;

namespace TransparencyWarningsDemo
{

    public class SafeNativeMethods
    {
        // CA2145 violation - transparent method marked SuppressUnmanagedCodeSecurity.  This should be fixed by
        // marking this method SecurityCritical.
        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        [return: MarshalAs(UnmanagedType.Bool)]
        internal static extern bool Beep(uint dwFreq, uint dwDuration);
    }
}