SuppressUnmanagedCodeSecurityAttribute-Klasse
Ermöglicht es verwaltetem Code, Aufrufe in nicht verwaltetem Code ohne Stackwalk durchzuführen. Diese Klasse kann nicht vererbt werden.
Namespace: System.Security
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method Or AttributeTargets.Interface Or AttributeTargets.Delegate, AllowMultiple:=True, Inherited:=False)> _
Public NotInheritable Class SuppressUnmanagedCodeSecurityAttribute
Inherits Attribute
'Usage
Dim instance As SuppressUnmanagedCodeSecurityAttribute
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Interface|AttributeTargets.Delegate, AllowMultiple=true, Inherited=false)]
public sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method|AttributeTargets::Interface|AttributeTargets::Delegate, AllowMultiple=true, Inherited=false)]
public ref class SuppressUnmanagedCodeSecurityAttribute sealed : public Attribute
/** @attribute ComVisibleAttribute(true) */
/** @attribute AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Interface|AttributeTargets.Delegate, AllowMultiple=true, Inherited=false) */
public final class SuppressUnmanagedCodeSecurityAttribute extends Attribute
ComVisibleAttribute(true)
AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Interface|AttributeTargets.Delegate, AllowMultiple=true, Inherited=false)
public final class SuppressUnmanagedCodeSecurityAttribute extends Attribute
Hinweise
Warnung
Verwenden Sie dieses Attribut mit größter Vorsicht. Falsche Verwendung kann zu Sicherheitseinbußen führen.
Dieses Attribut kann auf Methoden angewendet werden, die systemeigenenen Code aufrufen sollen, ohne dadurch den Leistungsverlust einer Laufzeit-Sicherheitsüberprüfung zu verursachen. Der beim Aufruf von nicht verwaltetem Code durchgeführte Stackwalk wird zur Laufzeit nicht ausgeführt, und dies führt zu einer erheblichen Leistungssteigerung. Bei Verwendung dieses Attributs in einer Klasse wird dieses auf alle darin enthaltenen Methoden angewendet.
Wenn verwalteter Code nicht verwalteten Code aufruft (durch PInvoke oder COM-Interop in systemeigenem Code), wird i. d. R. eine UnmanagedCode-Berechtigung angefordert, damit sichergestellt ist, dass alle Aufrufer über die erforderliche Berechtigung für diesen Vorgang verfügen. Entwickler können durch Anwendung dieses expliziten Attributs die Anforderung zur Laufzeit unterdrücken. Der Entwickler muss sicherstellen, dass der Übergang in nicht verwalteten Code durch andere Mittel ausreichend gesichert ist. Die UnmanagedCode-Berechtigung wird zur Verknüpfungszeit jedoch weiterhin angefordert. Wenn z. B. Funktion A Funktion B aufruft und Funktion B durch SuppressUnmanagedCodeSecurityAttribute gekennzeichnet ist, wird Funktion A während der Just-In-Time-Kompilierung auf eine Berechtigung für nicht verwalteten Code überprüft, allerdings nicht anschließend zur Laufzeit.
Dieses Attribut ist nur wirksam, wenn es auf PInvoke-Methoden bzw. auf Klassen mit PInvoke-Methoden oder auf die Definition einer Schnittstelle angewendet wird, über die Interop-Aufrufe erfolgen. Es wird in jedem anderen Kontext ignoriert.
Dieses Attribut ist für die Implementierung einer Klasse nützlich, die über nicht verwalteten Code den Zugriff auf Systemressourcen bereitstellt. Code ohne Berechtigung für den Zugriff auf nicht verwalteten Code kann eine Klasse mit diesem Attribut aufrufen, um auf nicht verwalteten Code zuzugreifen. Das ist nur dann sicher, wenn der Autor der Klasse mit diesem Attribut die Klasse so programmiert hat, dass sie sicher ist. Andernfalls ist dieses Attribut gefährlich, und der dieses Attribut verwendende Code kann dadurch missbraucht werden.
Dies ist kein deklaratives Sicherheitsattribut, sondern ein reguläres Attribut (es wird von Attribute und nicht von SecurityAttribute abgeleitet).
Vererbungshierarchie
System.Object
System.Attribute
System.Security.SuppressUnmanagedCodeSecurityAttribute
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
SuppressUnmanagedCodeSecurityAttribute-Member
System.Security-Namespace
Weitere Ressourcen
Extending Metadata Using Attributes
Sicherheitsoptimierungen