CA2149: Los métodos transparentes no deben llamar a código nativo
Elemento | Valor |
---|---|
RuleId | CA2149 |
Category | Microsoft.Security |
Cambio importante | Problemático |
Causa
Un método llama a una función nativa a través de un código auxiliar de método como P/Invoke.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
Esta regla se desencadena en cualquier método transparente que llame directamente a código nativo, por ejemplo, a través de P/Invoke. Las infracciones de esta regla tienen como resultado MethodAccessException en el modelo de transparencia de nivel 2 y una demanda completa de UnmanagedCode en el modelo de transparencia de nivel 1.
Cómo corregir infracciones
Para corregir una infracción de esta regla, marque el método que llama al código nativo con los atributos SecurityCriticalAttribute o SecuritySafeCriticalAttribute.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
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);
}
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de