Sdílet prostřednictvím


CA2145: Transparentní metody nesmějí být doplněny pomocí SuppressUnmanagedCodeSecurityAttribute

TypeName

TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity

CheckId

CA2145

Kategorie

Microsoft.Security

Narušující změna

Narušující

Příčina

Transparentní metoda, metoda označená atributem SecuritySafeCriticalAttribute nebo typ obsahující metodu označenou atributem SuppressUnmanagedCodeSecurityAttribute.

Popis pravidla

Na jakoukoli metodu, která volá metody označené atributem SuppressUnmanagedCodeSecurityAttribute, je implicitně umístěn LinkDemand.Tento LinkDemand vyžaduje, aby volající kód byl kriticky zabezpečený.Označení metody, která používá SuppressUnmanagedCodeSecurity, atributem SecurityCriticalAttribute zviditelňuje tento požadavek pro volající metody.

Jak vyřešit porušení

Porušení tohoto pravidla lze vyřešit označením metody nebo typu atributem SecurityCriticalAttribute.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Kód

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);
    }
}