SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute Class

Definición

Permite al código administrado llamar al código no administrado sin realizar un recorrido de pila.Allows managed code to call into unmanaged code without a stack walk. Esta clase no puede heredarse.This class cannot be inherited.

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

Comentarios

Precaución

Use este atributo con extrema precaución.Use this attribute with extreme care. Un uso incorrecto puede crear puntos débiles de seguridad.Incorrect use can create security weaknesses.

Este atributo se puede aplicar a métodos que deseen 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.This attribute can be applied to methods that want to call into native code without incurring the performance loss of a run-time security check when doing so. El recorrido de pila que se realiza al llamar a código no administrado se omite en tiempo de ejecución, lo que da lugar a un ahorro considerable en el rendimiento.The stack walk performed when calling unmanaged code is omitted at run time, resulting in substantial performance savings. El uso de este atributo en una clase lo aplica a todos los métodos contenidos.Using this attribute in a class applies it to all contained methods.

Por lo general, siempre que el código administrado llama a código no administrado (mediante PInvoke o la interoperabilidad com en código nativo), UnmanagedCode se requiere el permiso para asegurarse de que todos los llamadores tienen el permiso necesario para permitirlo.Generally, whenever managed code calls into unmanaged code (by PInvoke or COM interop into native code), there is a demand for the UnmanagedCode permission to ensure all callers have the necessary permission to allow this. Al aplicar este atributo explícito, los desarrolladores pueden suprimir la demanda en tiempo de ejecución.By applying this explicit attribute, developers can suppress the demand at run time. El desarrollador debe asumir la responsabilidad de garantizar que la transición a código no administrado esté suficientemente protegida por otros medios.The developer must take responsibility for assuring that the transition into unmanaged code is sufficiently protected by other means. La demanda del permiso UnmanagedCode se seguirá produciendo en el momento de la vinculación.The demand for the UnmanagedCode permission will still occur at link time. Por ejemplo, si la función a llama a la función b y la función SuppressUnmanagedCodeSecurityAttributeb está marcada con, se comprobará el permiso de código no administrado en la función a durante la compilación Just-in-Time, pero no posteriormente durante el tiempo de ejecución.For example, if function A calls function B and function B is marked with SuppressUnmanagedCodeSecurityAttribute, function A will be checked for unmanaged code permission during just-in-time compilation, but not subsequently during run time.

Este atributo solo es efectivo cuando se aplica a métodos PInvoke (o clases que contienen métodos PInvoke) o a la definición de una interfaz a través de la cual se realizarán llamadas de interoperabilidad.This attribute is only effective when applied to PInvoke methods (or classes that contain PInvoke methods) or the definition of an interface through which interop calls will be made. Se omitirá en todos los demás contextos.It will be ignored in all other contexts.

Este atributo es útil para implementar una clase que proporciona acceso a los recursos del sistema a través de código no administrado.This attribute is useful for implementing a class that provides access to system resources through unmanaged code. El código que no tiene permiso para acceder a código no administrado puede llamar a una clase con este atributo para tener acceso a código no administrado.Code that does not have permission to access unmanaged code can call a class with this attribute to access unmanaged code. Esto solo es seguro si el escritor de la clase con este atributo ha programado la clase para que sea segura.This is only safe if the writer of the class with this attribute has programmed the class to be secure. Si no es así, este atributo es peligroso y puede permitir que el código que lo utiliza no se use.If not, this attribute is dangerous and can allow the code that uses it to be misused.

No es un atributo de seguridad declarativo, sino un atributo normal (deriva de Attribute, no SecurityAttribute).This is not a declarative security attribute, but a regular attribute (it derives from Attribute, not SecurityAttribute).

Constructores

SuppressUnmanagedCodeSecurityAttribute() SuppressUnmanagedCodeSecurityAttribute() SuppressUnmanagedCodeSecurityAttribute() SuppressUnmanagedCodeSecurityAttribute()

Inicializa una nueva instancia de la clase SuppressUnmanagedCodeSecurityAttribute.Initializes a new instance of the SuppressUnmanagedCodeSecurityAttribute class.

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Propiedades

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Se aplica a

Consulte también: