SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute SuppressUnmanagedCodeSecurityAttribute Class

Definition

Ermöglicht es verwaltetem Code, Aufrufe in nicht verwaltetem Code ohne Stackwalk durchzuführen.Allows managed code to call into unmanaged code without a stack walk. Diese Klasse kann nicht vererbt werden.This class cannot be inherited.

public ref class SuppressUnmanagedCodeSecurityAttribute sealed : Attribute
[System.Runtime.InteropServices.ComVisible(true)]
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute
type SuppressUnmanagedCodeSecurityAttribute = class
    inherit Attribute
Public NotInheritable Class SuppressUnmanagedCodeSecurityAttribute
Inherits Attribute
Vererbung
SuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttribute
Attribute

Hinweise

Achtung

Verwenden Sie dieses Attribut mit äußerster Sorgfalt.Use this attribute with extreme care. Falsche Verwendung kann zu Sicherheitslücken führen.Incorrect use can create security weaknesses.

Dieses Attribut kann auf Methoden angewendet werden, die nativen Code aufgerufen werden sollen, ohne dabei den Leistungsverlust einer Lauf Zeit Sicherheitsüberprüfung zu verursachen.This attribute can be applied to methods that want to call into native code without incurring the performance loss of a run-time security check when doing so. Der Stapel Durchlauf, der beim Aufrufen von nicht verwaltetem Code ausgeführt wird, wird zur Laufzeit ausgelassen und führt zu erheblichen Leistungs Einsparungen.The stack walk performed when calling unmanaged code is omitted at run time, resulting in substantial performance savings. Durch die Verwendung dieses Attributs in einer Klasse wird es auf alle enthaltenen Methoden angewendet.Using this attribute in a class applies it to all contained methods.

Wenn verwalteter Code in nicht verwaltetem Code aufruft (durch PInvoke oder COM-Interop in nativem Code), wird in der Regel UnmanagedCode die Berechtigung zum sicherstellen, dass alle Aufrufer über die erforderliche Berechtigung verfügen, dies zuzulassen.Generally, whenever managed code calls into unmanaged code (by PInvoke or COM interop into native code), there is a demand for the UnmanagedCode permission to ensure all callers have the necessary permission to allow this. Wenn Sie dieses explizite Attribut anwenden, können Entwickler die Nachfrage zur Laufzeit unterdrücken.By applying this explicit attribute, developers can suppress the demand at run time. Der Entwickler muss die Verantwortung dafür übernehmen, sicherzustellen, dass der Übergang zu nicht verwaltetem Code auf andere Weise ausreichend geschützt ist.The developer must take responsibility for assuring that the transition into unmanaged code is sufficiently protected by other means. Die Anforderung für die UnmanagedCode Berechtigung erfolgt weiterhin zur Verknüpfungs Zeit.The demand for the UnmanagedCode permission will still occur at link time. Wenn z. b. Funktion a Funktion b aufruft und Funktion b mit SuppressUnmanagedCodeSecurityAttributemarkiert ist, wird Funktion a während der Just-in-Time-Kompilierung auf die Berechtigung für nicht verwalteten Code geprüft, jedoch nicht zur Laufzeit.For example, if function A calls function B and function B is marked with SuppressUnmanagedCodeSecurityAttribute, function A will be checked for unmanaged code permission during just-in-time compilation, but not subsequently during run time.

Dieses Attribut ist nur gültig, wenn es für PInvoke-Methoden (oder Klassen, die PInvoke-Methoden enthalten) angewendet wird, oder die Definition einer Schnittstelle, über die Interop-Aufrufe ausgeführt werden.This attribute is only effective when applied to PInvoke methods (or classes that contain PInvoke methods) or the definition of an interface through which interop calls will be made. Sie wird in allen anderen Kontexten ignoriert.It will be ignored in all other contexts.

Dieses Attribut eignet sich für die Implementierung einer Klasse, die den Zugriff auf Systemressourcen durch nicht verwalteten Code ermöglicht.This attribute is useful for implementing a class that provides access to system resources through unmanaged code. Code, der nicht über die Berechtigung für den Zugriff auf nicht verwalteten Code verfügt, kann eine Klasse mit diesem Attribut aufrufen, um auf nicht verwalteten Code zuzugreifen.Code that does not have permission to access unmanaged code can call a class with this attribute to access unmanaged code. Dies ist nur sicher, wenn der Writer der Klasse mit diesem Attribut die Klasse als sicher programmiert hat.This is only safe if the writer of the class with this attribute has programmed the class to be secure. Wenn dies nicht der Fall ist, ist dieses Attribut gefährlich und kann zulassen, dass der Code, der ihn verwendet, missbraucht wird.If not, this attribute is dangerous and can allow the code that uses it to be misused.

Dabei handelt es sich nicht um ein deklaratives Sicherheits Attribut, sondern um ein reguläres AttributeAttribut ( SecurityAttributees wird von abgeleitet, nicht).This is not a declarative security attribute, but a regular attribute (it derives from Attribute, not SecurityAttribute).

Konstruktoren

SuppressUnmanagedCodeSecurityAttribute() SuppressUnmanagedCodeSecurityAttribute() SuppressUnmanagedCodeSecurityAttribute() SuppressUnmanagedCodeSecurityAttribute()

Initialisiert eine neue Instanz der SuppressUnmanagedCodeSecurityAttribute-Klasse.Initializes a new instance of the SuppressUnmanagedCodeSecurityAttribute class.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Eigenschaften

TypeId TypeId TypeId TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Gilt für:

Siehe auch