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
Атрибуты

Комментарии

Important

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

Предостережение

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

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

Как правило, при каждом вызове управляемого кода в неуправляемый код (по PInvoke или COM-взаимодействию в машинный код) есть запрос на разрешение, UnmanagedCode чтобы гарантировать, что все вызывающие имеют необходимое разрешение, чтобы разрешить это. Применяя этот явный атрибут, разработчики могут подавлять спрос во время выполнения. Разработчик должен взять на себя ответственность за то, что переход в неуправляемый код достаточно защищен другими средствами. Запрос на UnmanagedCode разрешение по-прежнему будет возникать во время ссылки. Например, если функция A вызывает функцию 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)

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

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