CA2145: Métodos transparentes não devem ser decorados com o SuppressUnmanagedCodeSecurityAttribute.
TypeName |
TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity |
CheckId |
CA2145 |
<strong>Categoria</strong> |
Microsoft.Security |
Alteração significativa |
Quebrando |
Causa
Um método transparente, um método marcado com o SecuritySafeCriticalAttribute método ou um tipo que contém um método está marcado com o SuppressUnmanagedCodeSecurityAttribute atributo.
Descrição da regra
Métodos decorados com o SuppressUnmanagedCodeSecurityAttribute atributo ter um LinkDemand implícito colocada em qualquer método que chama o proprietário. Este LinkDemand requer que o código de chamada crítica de segurança. Marcar o método que usa SuppressUnmanagedCodeSecurity com o SecurityCriticalAttribute atributo faz essa exigência mais óbvia para chamadores do método.
Como corrigir violações
Para corrigir uma violação desta regra, marcar o método ou digitar com o SecurityCriticalAttribute atributo.
Quando suprimir avisos
Não suprimir um aviso da regra.
Código
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);
}
}