SuppressUnmanagedCodeSecurityAttribute Klasa

Definicja

Umożliwia wywoływanie kodu zarządzanego do niezarządzanego kodu bez stosu. Klasa ta nie może być dziedziczona.

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
Dziedziczenie
SuppressUnmanagedCodeSecurityAttribute
Atrybuty

Uwagi

Ważne

Częściowo zaufany kod nie jest już obsługiwany. Ten atrybut nie ma wpływu na platformę .NET Core.

Przestroga

Użyj tego atrybutu z wyjątkową starannością. Nieprawidłowe użycie może powodować słabe strony zabezpieczeń.

Ten atrybut można zastosować do metod, które chcą wywoływać kod natywny bez ponoszenia utraty wydajności sprawdzania zabezpieczeń w czasie wykonywania. Przewodnik stosu wykonywany podczas wywoływania niezarządzanego kodu zostanie pominięty w czasie wykonywania, co skutkuje znacznymi oszczędnościami wydajności. Użycie tego atrybutu w klasie stosuje go do wszystkich zawartych metod.

Ogólnie rzecz biorąc, za każdym razem, gdy kod zarządzany wywołuje niezarządzany kod (przez funkcję PInvoke lub międzyoperacyjności com w kodzie natywnym), istnieje zapotrzebowanie na UnmanagedCode uprawnienie, aby upewnić się, że wszyscy wywołujący mają niezbędne uprawnienia, aby to umożliwić. Stosując ten jawny atrybut, deweloperzy mogą pominąć zapotrzebowanie w czasie wykonywania. Deweloper musi wziąć odpowiedzialność za zapewnienie, że przejście do kodu niezarządzanego jest wystarczająco chronione w inny sposób. Żądanie UnmanagedCode uprawnienia będzie nadal występować w czasie połączenia. Jeśli na przykład funkcja A wywołuje funkcję B i funkcja B jest oznaczona za pomocą SuppressUnmanagedCodeSecurityAttributefunkcji , funkcja A zostanie sprawdzona pod kątem niezarządzanych uprawnień kodu podczas kompilacji just in time, ale nie później w czasie wykonywania.

Ten atrybut jest skuteczny tylko w przypadku zastosowania do metod PInvoke (lub klas zawierających metody PInvoke) lub definicji interfejsu, za pomocą którego będą wykonywane wywołania międzyoperacyjności. Zostanie on zignorowany we wszystkich innych kontekstach.

Ten atrybut jest przydatny do implementowania klasy, która zapewnia dostęp do zasobów systemowych za pośrednictwem kodu niezarządzanego. Kod, który nie ma uprawnień dostępu do niezarządzanego kodu, może wywołać klasę z tym atrybutem w celu uzyskania dostępu do kodu niezarządzanego. Jest to bezpieczne tylko wtedy, gdy zapis klasy z tym atrybutem programował klasę do zabezpieczenia. Jeśli nie, ten atrybut jest niebezpieczny i może zezwolić na użycie kodu, który używa go do nieprawidłowego użycia.

Nie jest to atrybut zabezpieczeń deklaratywnych, ale atrybut zwykły (pochodzi od Attribute, a nie SecurityAttribute).

Konstruktory

SuppressUnmanagedCodeSecurityAttribute()

Inicjuje nowe wystąpienie klasy SuppressUnmanagedCodeSecurityAttribute.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też