SuppressUnmanagedCodeSecurityAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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 ekstremalną starannością. Nieprawidłowe użycie może powodować słabe punkty 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 jest pomijany w czasie wykonywania, co powoduje znaczne oszczędności 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 kod niezarządzany (międzyoperacyjności PInvoke lub COM w kodzie natywnym), istnieje zapotrzebowanie na UnmanagedCode
uprawnienie, aby upewnić się, że wszyscy wywołujący mają niezbędne uprawnienia, aby zezwolić na to. 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 za pomocą innych środków. Zapotrzebowanie na UnmanagedCode
uprawnienie nadal będzie występować w czasie połączenia. Jeśli na przykład funkcja A wywołuje funkcję B i funkcja B jest oznaczona za pomocą funkcji , funkcja A zostanie sprawdzona pod kątem SuppressUnmanagedCodeSecurityAttributeniezarządzanego uprawnienia kodu podczas kompilacji just in time, ale nie 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ędzyoperacyjne. 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 niezarządzanego kodu. 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 niezarządzanego kodu. Jest to bezpieczne tylko wtedy, gdy zapis klasy z tym atrybutem zaprogramował klasę do zabezpieczenia. Jeśli nie, ten atrybut jest niebezpieczny i może zezwalać na niewłaściwe użycie kodu.
Nie jest to deklaratywny atrybut zabezpieczeń, ale zwykły atrybut (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 elementu Attribute. (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 bieżące wystąpienie. (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) |
W przypadku zastąpienia 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 obiektu, którego można użyć do pobrania informacji o typie 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) |