SuppressUnmanagedCodeSecurityAttribute Classe

Définition

Permet au code managé d’appeler dans du code non managé sans parcours de pile. Cette classe ne peut pas être héritée.

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
Héritage
SuppressUnmanagedCodeSecurityAttribute
Attributs

Remarques

Important

Le code partiellement approuvé n’est plus pris en charge. Cet attribut n’a aucun effet dans .NET Core.

Attention

Utilisez cet attribut avec le plus grand soin. Une utilisation incorrecte peut créer des faiblesses de sécurité.

Cet attribut peut être appliqué aux méthodes qui souhaitent appeler du code natif sans entraîner la perte de performances d’une case activée de sécurité au moment de l’exécution. La procédure de pile effectuée lors de l’appel du code non managé est omise au moment de l’exécution, ce qui entraîne des économies substantielles en matière de performances. L’utilisation de cet attribut dans une classe l’applique à toutes les méthodes contenues.

En règle générale, chaque fois que du code managé appelle du code non managé (par PInvoke ou COM Interop dans du code natif), il existe une demande pour l’autorisation UnmanagedCode de s’assurer que tous les appelants disposent de l’autorisation nécessaire pour autoriser cela. En appliquant cet attribut explicite, les développeurs peuvent supprimer la demande au moment de l’exécution. Le développeur doit prendre la responsabilité de s’assurer que la transition vers du code non managé est suffisamment protégée par d’autres moyens. La demande d’autorisation UnmanagedCode se produit toujours au moment du lien. Par exemple, si la fonction A appelle la fonction B et que la fonction B est marquée avec SuppressUnmanagedCodeSecurityAttribute, la fonction A est vérifiée pour l’autorisation de code non managé pendant la compilation juste-à-temps, mais pas par la suite pendant l’exécution.

Cet attribut n’est efficace qu’en cas d’application aux méthodes PInvoke (ou aux classes qui contiennent des méthodes PInvoke) ou à la définition d’une interface via laquelle les appels d’interopérabilité seront effectués. Elle sera ignorée dans tous les autres contextes.

Cet attribut est utile pour implémenter une classe qui fournit l’accès aux ressources système via du code non managé. Le code qui n’a pas l’autorisation d’accéder au code non managé peut appeler une classe avec cet attribut pour accéder au code non managé. Cela n’est sécurisé que si l’enregistreur de la classe avec cet attribut a programmé la classe pour qu’elle soit sécurisée. Si ce n’est pas le cas, cet attribut est dangereux et peut permettre d’utiliser à mauvais escient le code qui l’utilise.

Il ne s’agit pas d’un attribut de sécurité déclaratif, mais d’un attribut normal (il dérive de Attribute, et non SecurityAttribute).

Constructeurs

SuppressUnmanagedCodeSecurityAttribute()

Initialise une nouvelle instance de la classe SuppressUnmanagedCodeSecurityAttribute.

Propriétés

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi