CA2149: os métodos transparentes não devem chamar código nativo
TypeName |
TransparentMethodsMustNotCallNativeCode |
CheckId |
CA2149 |
Categoria |
Microsoft.Security |
Alteração Significativa |
Quebra |
Causa
Um método chama uma função nativo através de um stub do método como P/Invoke.
Descrição da Regra
Esta regra é acionado em qualquer método transparente que chamar diretamente em código nativo, por exemplo, com um P/Invoke.As violações desta regra resultam em MethodAccessException na transparência de nível 2 modelo, e uma procura completa para UnmanagedCode no modelo de transparência de nível 1.
Como Corrigir Violações
Para corrigir uma violação desta regra, marque o método que chama o código nativo com o atributo de SecurityCriticalAttribute ou de SecuritySafeCriticalAttribute .
Quando Suprimir Alertas
Não elimine um alerta desta regra.
Exemplo
using System;
using System.Runtime.InteropServices;
namespace TransparencyWarningsDemo
{
public class CallNativeCodeClass
{
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool Beep(uint dwFreq, uint dwDuration);
public void CallNativeMethod()
{
// CA2149 violation - transparent method calling native code
Beep(10000, 1);
}
}
}