SuppressUnmanagedCodeSecurityAttribute Classe

Definição

Permite que o código gerenciado chame um código não gerenciado sem uma caminhada de pilha. Essa classe não pode ser herdada.

public ref class SuppressUnmanagedCodeSecurityAttribute sealed : 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)]
public sealed class SuppressUnmanagedCodeSecurityAttribute : 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
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
type SuppressUnmanagedCodeSecurityAttribute = class
    inherit Attribute
Public NotInheritable Class SuppressUnmanagedCodeSecurityAttribute
Inherits Attribute
Herança
SuppressUnmanagedCodeSecurityAttribute
Atributos

Comentários

Importante

Não há mais suporte para código parcialmente confiável. Esse atributo não tem efeito no .NET Core.

Caution

Use esse atributo com extremo cuidado. O uso incorreto pode criar pontos fracos de segurança.

Esse atributo pode ser aplicado a métodos que desejam chamar o código nativo sem incorrer na perda de desempenho de uma verificação de segurança em tempo de execução ao fazer isso. A caminhada de pilha executada ao chamar código não gerenciado é omitida em tempo de execução, resultando em uma economia substancial de desempenho. Usar esse atributo em uma classe o aplica a todos os métodos contidos.

Geralmente, sempre que o código gerenciado chama um código não gerenciado (por PInvoke ou COM interoperabilidade em código nativo), há uma demanda pela permissão para UnmanagedCode garantir que todos os chamadores tenham a permissão necessária para permitir isso. Ao aplicar esse atributo explícito, os desenvolvedores podem suprimir a demanda em tempo de execução. O desenvolvedor deve assumir a responsabilidade de garantir que a transição para o código não gerenciado esteja suficientemente protegida por outros meios. A demanda pela UnmanagedCode permissão ainda ocorrerá no momento do link. Por exemplo, se a função A chamar a função B e a função B estiver marcada, SuppressUnmanagedCodeSecurityAttributea função A será verificada quanto à permissão de código não gerenciada durante a compilação just-in-time, mas não posteriormente durante o tempo de execução.

Esse atributo só é eficaz quando aplicado a métodos PInvoke (ou classes que contêm métodos PInvoke) ou a definição de uma interface por meio da qual serão feitas chamadas de interoperabilidade. Ele será ignorado em todos os outros contextos.

Esse atributo é útil para implementar uma classe que fornece acesso aos recursos do sistema por meio de código não gerenciado. O código que não tem permissão para acessar código não gerenciado pode chamar uma classe com esse atributo para acessar código não gerenciado. Isso só será seguro se o gravador da classe com esse atributo tiver programado a classe para ser segura. Caso contrário, esse atributo é perigoso e pode permitir que o código que o usa seja usado incorretamente.

Este não é um atributo de segurança declarativo, mas um atributo regular (ele deriva de Attribute, não SecurityAttribute).

Construtores

Nome Description
SuppressUnmanagedCodeSecurityAttribute()

Inicializa uma nova instância da classe SuppressUnmanagedCodeSecurityAttribute.

Propriedades

Nome Description
TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para esse Attribute.

(Herdado de Attribute)

Métodos

Nome Description
Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash dessa instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

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

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo de uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

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

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Confira também