SuppressUnmanagedCodeSecurityAttribute Classe

Definizione

Consente al codice gestito di chiamare codice non gestito senza una procedura dettagliata dello stack. La classe non può essere ereditata.

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
Ereditarietà
SuppressUnmanagedCodeSecurityAttribute
Attributi

Commenti

Importante

Il codice parzialmente attendibile non è più supportato. Questo attributo non ha alcun effetto in .NET Core.

Caution

Usare questo attributo con estrema attenzione. L'uso non corretto può creare punti deboli per la sicurezza.

Questo attributo può essere applicato ai metodi che vogliono chiamare nel codice nativo senza incorrere nella perdita di prestazioni di un controllo di sicurezza in fase di esecuzione quando si esegue questa operazione. La procedura dettagliata dello stack eseguita quando si chiama codice non gestito viene omessa in fase di esecuzione, con un notevole risparmio di prestazioni. L'uso di questo attributo in una classe lo applica a tutti i metodi contenuti.

In genere, ogni volta che il codice gestito chiama codice non gestito (da PInvoke o interoperabilità COM nel codice nativo), è richiesta l'autorizzazione UnmanagedCode per garantire che tutti i chiamanti dispongano dell'autorizzazione necessaria per consentire questa operazione. Applicando questo attributo esplicito, gli sviluppatori possono eliminare la richiesta in fase di esecuzione. Lo sviluppatore deve assumersi la responsabilità di garantire che la transizione al codice non gestito sia sufficientemente protetta da altri mezzi. La richiesta di UnmanagedCode autorizzazione verrà comunque eseguita in fase di collegamento. Ad esempio, se la funzione A chiama la funzione B e la funzione B è contrassegnata con SuppressUnmanagedCodeSecurityAttribute, la funzione A verrà controllata per l'autorizzazione del codice non gestito durante la compilazione JUST-in-time, ma non successivamente durante la fase di esecuzione.

Questo attributo è efficace solo se applicato ai metodi PInvoke (o classi che contengono metodi PInvoke) o alla definizione di un'interfaccia tramite cui verranno effettuate chiamate di interoperabilità. Verrà ignorato in tutti gli altri contesti.

Questo attributo è utile per implementare una classe che fornisce l'accesso alle risorse di sistema tramite codice non gestito. Il codice che non dispone dell'autorizzazione per accedere al codice non gestito può chiamare una classe con questo attributo per accedere al codice non gestito. Questa operazione è sicura solo se il writer della classe con questo attributo ha programmato la classe per essere sicura. In caso contrario, questo attributo è pericoloso e può consentire l'uso improprio del codice.

Non si tratta di un attributo di sicurezza dichiarativo, ma di un attributo regolare (deriva da Attribute, non SecurityAttribute).

Costruttori

Nome Descrizione
SuppressUnmanagedCodeSecurityAttribute()

Inizializza una nuova istanza della classe SuppressUnmanagedCodeSecurityAttribute.

Proprietà

Nome Descrizione
TypeId

Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute.

(Ereditato da Attribute)

Metodi

Nome Descrizione
Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per questa istanza.

(Ereditato da Attribute)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

Quando sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto .

(Ereditato da Attribute)

Si applica a

Vedi anche