SuppressUnmanagedCodeSecurityAttribute Класс

Определение

Позволяет управляемому коду вызывать неуправляемый код без обхода стека. Этот класс не наследуется.

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
Наследование
SuppressUnmanagedCodeSecurityAttribute
Атрибуты

Комментарии

Важно!

Частично доверенный код больше не поддерживается. Этот атрибут не действует в .NET Core.

Внимание!

Используйте этот атрибут с особой осторожностью. Неправильное использование может создать слабые места в системе безопасности.

Этот атрибут можно применять к методам, которые хотят вызывать в машинный код без потери производительности проверка безопасности во время выполнения. Обход стека, выполняемый при вызове неуправляемого кода, опущен во время выполнения, что приводит к значительной экономии производительности. Использование этого атрибута в классе применяет его ко всем содержащимся методам.

Как правило, при каждом вызове управляемого кода в неуправляемый код (путем взаимодействия PInvoke или COM в машинный код) требуется разрешение, чтобы убедиться, что все вызывающие объекты имеют необходимые разрешения для UnmanagedCode этого. Применив этот явный атрибут, разработчики могут подавлять спрос во время выполнения. Разработчик должен взять на себя ответственность за обеспечение достаточной защиты перехода в неуправляемый код другими средствами. Запрос на разрешение по-прежнему UnmanagedCode будет возникать во время связывания. Например, если функция А вызывает функцию B, а функция B помечена параметром SuppressUnmanagedCodeSecurityAttribute, функция A будет проверяться на наличие разрешения на неуправляемый код во время JIT-компиляции, но не во время выполнения.

Этот атрибут действует только при применении к методам PInvoke (или классам, содержащим методы PInvoke) или определению интерфейса, через который будут выполняться вызовы взаимодействия. Он будет игнорироваться во всех остальных контекстах.

Этот атрибут полезен для реализации класса, который предоставляет доступ к системным ресурсам через неуправляемый код. Код, который не имеет разрешения на доступ к неуправляемый код, может вызывать класс с этим атрибутом для доступа к неуправляемого кода. Это безопасно, только если модуль записи класса с этим атрибутом запрограммировал класс на безопасность. В противном случае этот атрибут опасен и может позволить неправильно использовать код, который его использует.

Это не декларативный атрибут безопасности, а обычный атрибут (он является производным от Attribute, а не SecurityAttribute).

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

SuppressUnmanagedCodeSecurityAttribute()

Инициализирует новый экземпляр класса SuppressUnmanagedCodeSecurityAttribute.

Свойства

TypeId

В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute.

(Унаследовано от Attribute)

Методы

Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код данного экземпляра.

(Унаследовано от Attribute)
GetType()

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

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.

(Унаследовано от Attribute)

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

См. также раздел