Compartir a través de


SuppressUnmanagedCodeSecurityAttribute Clase

Definición

Permite que el código administrado llame a código sin administrar sin un recorrido de pila. Esta clase no puede heredarse.

public ref class SuppressUnmanagedCodeSecurityAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
type SuppressUnmanagedCodeSecurityAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
type SuppressUnmanagedCodeSecurityAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SuppressUnmanagedCodeSecurityAttribute = class
    inherit Attribute
Public NotInheritable Class SuppressUnmanagedCodeSecurityAttribute
Inherits Attribute
Herencia
SuppressUnmanagedCodeSecurityAttribute
Atributos

Comentarios

Importante

Ya no se admite el código de confianza parcial. Este atributo no tiene ningún efecto en .NET Core.

Precaución

Use este atributo con cuidado extremo. El uso incorrecto puede crear puntos débiles de seguridad.

Este atributo se puede aplicar a métodos que quieran llamar a código nativo sin incurrir en la pérdida de rendimiento de una comprobación de seguridad en tiempo de ejecución al hacerlo. El recorrido de la pila realizado al llamar al código no administrado se omite en tiempo de ejecución, lo que da lugar a un ahorro de rendimiento considerable. El uso de este atributo en una clase lo aplica a todos los métodos contenidos.

Por lo general, cada vez que el código administrado llama a código no administrado (por PInvoke o la interoperabilidad COM en código nativo), hay una demanda de permiso para UnmanagedCode asegurarse de que todos los autores de llamadas tengan el permiso necesario para permitir esto. Al aplicar este atributo explícito, los desarrolladores pueden suprimir la demanda en tiempo de ejecución. El desarrollador debe asumir la responsabilidad de asegurarse de que la transición al código no administrado está suficientemente protegida por otros medios. La demanda del permiso se seguirá produciendo en el momento del UnmanagedCode vínculo. Por ejemplo, si la función A llama a la función B y a la función B se marca con SuppressUnmanagedCodeSecurityAttribute, se comprobará la función A para obtener el permiso de código no administrado durante la compilación Just-In-Time, pero no posteriormente durante el tiempo de ejecución.

Este atributo solo es efectivo cuando se aplica a métodos PInvoke (o clases que contienen métodos PInvoke) o la definición de una interfaz a través de la cual se realizarán llamadas de interoperabilidad. Se omitirá en todos los demás contextos.

Este atributo es útil para implementar una clase que proporciona acceso a los recursos del sistema a través de código no administrado. El código que no tiene permiso para acceder al código no administrado puede llamar a una clase con este atributo para acceder al código no administrado. Esto solo es seguro si el escritor de la clase con este atributo ha programado la clase para que sea segura. Si no es así, este atributo es peligroso y puede permitir que el código que lo usa se use incorrectamente.

Este no es un atributo de seguridad declarativo, sino un atributo normal (deriva de Attribute, no SecurityAttribute).

Constructores

SuppressUnmanagedCodeSecurityAttribute()

Inicializa una nueva instancia de la clase SuppressUnmanagedCodeSecurityAttribute.

Propiedades

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Consulte también