SuppressUnmanagedCodeSecurityAttribute Klass

Definition

Tillåter att hanterad kod anropar ohanterad kod utan en stackvandring. Det går inte att ärva den här klassen.

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
Arv
SuppressUnmanagedCodeSecurityAttribute
Attribut

Kommentarer

Important

Delvis betrodd kod stöds inte längre. Det här attributet har ingen effekt i .NET Core.

Caution

Använd det här attributet med extrem försiktighet. Felaktig användning kan skapa säkerhetsbrister.

Det här attributet kan tillämpas på metoder som vill anropa intern kod utan att orsaka prestandaförlust för en körningssäkerhetskontroll när du gör det. Stack-genomgången som utförs när du anropar ohanterad kod utelämnas vid körning, vilket resulterar i betydande prestandabesparingar. Om du använder det här attributet i en klass tillämpas det på alla inneslutna metoder.

När hanterad kod anropar ohanterad kod (av PInvoke eller COM-interop till intern kod) finns det vanligtvis ett krav på behörighet att se till att alla anropare har den behörighet som krävs för UnmanagedCode att tillåta detta. Genom att använda det här explicita attributet kan utvecklare förhindra efterfrågan vid körning. Utvecklaren måste ta ansvar för att säkerställa att övergången till ohanterad kod skyddas tillräckligt på annat sätt. Kravet på behörigheten UnmanagedCode inträffar fortfarande vid länktid. Om funktionen A anropar funktion B och funktion B markeras med SuppressUnmanagedCodeSecurityAttribute, kontrolleras funktion A för ohanterad kodbehörighet under just-in-time-kompilering, men inte senare under körningstiden.

Det här attributet är endast effektivt när det tillämpas på PInvoke-metoder (eller klasser som innehåller PInvoke-metoder) eller definitionen av ett gränssnitt genom vilket interop-anrop görs. Det ignoreras i alla andra kontexter.

Det här attributet är användbart för att implementera en klass som ger åtkomst till systemresurser via ohanterad kod. Kod som inte har behörighet att komma åt ohanterad kod kan anropa en klass med det här attributet för att få åtkomst till ohanterad kod. Detta är bara säkert om klassens författare med det här attributet har programmerat klassen att vara säker. Annars är det här attributet farligt och kan tillåta att koden som använder det missbrukas.

Det här är inte ett deklarativt säkerhetsattribut, utan ett vanligt attribut (det härleds från Attribute, inte SecurityAttribute).

Konstruktorer

Name Description
SuppressUnmanagedCodeSecurityAttribute()

Initierar en ny instans av SuppressUnmanagedCodeSecurityAttribute klassen.

Egenskaper

Name Description
TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

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

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för

Se även