SuppressUnmanagedCodeSecurityAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Permite que o código gerido chame para código não gerido sem necessidade de passar pela pilha. Esta 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
- Atributos
Observações
Importante
Código parcialmente confiável já não é suportado. Este atributo não tem efeito no .NET Core.
Atenção
Use este atributo com extremo cuidado. O uso incorreto pode criar fragilidades de segurança.
Este atributo pode ser aplicado a métodos que pretendem chamar código nativo sem incorrer na perda de desempenho de uma verificação de segurança em tempo de execução ao fazê-lo. A caminhada da pilha realizada ao chamar código não gerido é omitida em tempo de execução, resultando numa poupança substancial de desempenho. Usar este atributo numa classe aplica-o a todos os métodos contidos.
Geralmente, sempre que o código gerido chama para código não gerido (por PInvoke ou interoperação COM em código nativo), existe uma exigência de UnmanagedCode permissão para garantir que todos os chamadores têm a permissão necessária para permitir isso. Ao aplicar este atributo explícito, os programadores podem suprimir a procura em tempo de execução. O programador deve assumir a responsabilidade de garantir que a transição para código não gerido seja suficientemente protegida por outros meios. A exigência da UnmanagedCode permissão continuará a ocorrer no momento da ligação. 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 para permissão de código não gerido durante a compilação just-in-time, mas não posteriormente durante a execução.
Este atributo só é eficaz quando aplicado a métodos PInvoke (ou classes que contenham métodos PInvoke) ou à definição de uma interface através da qual serão feitas chamadas de interoperabilidade. Será ignorado em todos os outros contextos.
Este atributo é útil para implementar uma classe que fornece acesso a recursos do sistema através de código não gerido. O código que não tem permissão para aceder a código não gerido pode chamar uma classe com este atributo para aceder a código não gerido. Isto só é seguro se o autor da classe com este atributo tiver programado a classe para ser segura. Se não, este atributo é perigoso e pode permitir que o código que o utiliza seja mal utilizado.
Este não é um atributo de segurança declarativo, mas sim um atributo regular (deriva de Attribute, não SecurityAttribute).
Construtores
| Name | Description |
|---|---|
| SuppressUnmanagedCodeSecurityAttribute() |
Inicializa uma nova instância da SuppressUnmanagedCodeSecurityAttribute classe. |
Propriedades
| Name | Description |
|---|---|
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface. (Herdado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |