SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute Class

Определение

Позволяет управляемому коду передавать управление неуправляемому коду без проверки стека.Allows managed code to call into unmanaged code without a stack walk. Этот класс не наследуется.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
Наследование
SuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttribute
Атрибуты

Комментарии

Внимание!

Этот атрибут можно используйте с особой осторожностью.Use this attribute with extreme care. Неправильное использование может создать уязвимостей системы безопасности.Incorrect use can create security weaknesses.

Этот атрибут может применяться к методам, которые нужно вызывать в машинном коде без потерь производительности, проверку безопасности во время выполнения при этом.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. Проверка стека, выполняемая при вызове неуправляемого кода опускается во время выполнения, что значительно повышает быстродействие.The stack walk performed when calling unmanaged code is omitted at run time, resulting in substantial performance savings. С помощью этого атрибута в классе применяет их на все методы класса.Using this attribute in a class applies it to all contained methods.

Как правило, каждый раз, когда управляемый код вызывает неуправляемый код (с помощью PInvoke или COM-взаимодействия в машинный код), есть требование UnmanagedCode разрешение, чтобы обеспечить все вызывающие объекты имеют необходимое разрешение для этого.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. Применяя этот явный атрибут, разработчики могут отключить это требование во время выполнения.By applying this explicit attribute, developers can suppress the demand at run time. Разработчик должен нести ответственность за обеспечение того, что переход к неуправляемому коду надежно защищен другими способами.The developer must take responsibility for assuring that the transition into unmanaged code is sufficiently protected by other means. Спрос на UnmanagedCode разрешение будет выполняться во время компоновки.The demand for the UnmanagedCode permission will still occur at link time. Например, если функция A вызывает функцию B и функцию B помечается SuppressUnmanagedCodeSecurityAttribute, функция будет выполнена проверка типа разрешение неуправляемого кода во время компиляции just-in-time, но не во время выполнения.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.

Этот атрибут действует только при применении к методам PInvoke (или классов, содержащих методы PInvoke) или определении интерфейса, через который будет осуществляться взаимодействие вызовов.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. Он будет проигнорирован в других контекстах.It will be ignored in all other contexts.

Этот атрибут полезен для реализации класса, который предоставляет доступ к системным ресурсам посредством неуправляемого кода.This attribute is useful for implementing a class that provides access to system resources through unmanaged code. Код, не имеет разрешения на доступ к неуправляемому коду, может вызвать класс с этим атрибутом, для доступа к неуправляемому коду.Code that does not have permission to access unmanaged code can call a class with this attribute to access unmanaged code. Это только безопасно, если модуль записи класса с этим атрибутом, обеспечил безопасность класса.This is only safe if the writer of the class with this attribute has programmed the class to be secure. В противном случае этот атрибут является опасной операцией и может разрешить кода, который его использует злонамеренное использование.If not, this attribute is dangerous and can allow the code that uses it to be misused.

Это не является атрибутом декларативной безопасности, но обычным атрибутом (он является производным от Attribute, а не SecurityAttribute).This is not a declarative security attribute, but a regular attribute (it derives from Attribute, not SecurityAttribute).

Конструкторы

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

Инициализирует новый экземпляр класса SuppressUnmanagedCodeSecurityAttribute.Initializes a new instance of the SuppressUnmanagedCodeSecurityAttribute class.

Методы

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

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.Returns a value that indicates whether this instance is equal to a specified object.

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

Возвращает хэш-код для данного экземпляра.Returns the hash code for this instance.

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

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

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

При переопределении в производном классе показывает, является ли значение данного экземпляра значением по умолчанию для производного класса.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)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.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()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

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

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

_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)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.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)

Возвращает сведения о типе объекта, которые могут использоваться для получения сведений о типе интерфейса.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)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (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)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Свойства

TypeId TypeId TypeId TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Применяется к

Дополнительно