SuppressUnmanagedCodeSecurityAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Permite que o código gerenciado chame código não gerenciado sem uma movimentação de pilha. Essa classe não pode ser herdada.
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
- Herança
- Atributos
Comentários
Importante
Não há mais suporte para código parcialmente confiável. Esse atributo não tem efeito no .NET Core.
Cuidado
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 um marcar de segurança em tempo de execução ao fazê-lo. A caminhada de pilha executada ao chamar o 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 código não gerenciado (por PInvoke ou interoperabilidade COM 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 assegurar que a transição para o código não gerenciado seja 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 com SuppressUnmanagedCodeSecurityAttribute, a 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.
Esse não é um atributo de segurança declarativo, mas um atributo regular (ele deriva de Attribute, não SecurityAttribute).
Construtores
SuppressUnmanagedCodeSecurityAttribute() |
Inicializa uma nova instância da classe SuppressUnmanagedCodeSecurityAttribute. |
Propriedades
TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute) |
Métodos
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 para a 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 Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
_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 para um objeto, que pode ser usado para obter as informações de tipo para 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) |