SuppressUnmanagedCodeSecurityAttribute Třída

Definice

Umožňuje spravovanému kódu volat nespravovaný kód bez procházky zásobníkem. Tuto třídu nelze dědit.

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
Dědičnost
SuppressUnmanagedCodeSecurityAttribute
Atributy

Poznámky

Důležité

Částečně důvěryhodný kód se už nepodporuje. Tento atribut nemá žádný vliv na .NET Core.

Upozornění

Tento atribut použijte s extrémní opatrností. Nesprávné použití může vytvářet slabá místa zabezpečení.

Tento atribut lze použít u metod, které chtějí volat do nativního kódu, aniž by při tom došlo ke ztrátě výkonu kontroly zabezpečení za běhu. Procházka zásobníkem provedená při volání nespravovaného kódu je vynechána za běhu, což vede k podstatným úsporám výkonu. Použití tohoto atributu ve třídě ji použije na všechny obsažené metody.

Obecně platí, že při každém volání spravovaného kódu do nespravovaného kódu (pomocí komunikace PInvoke nebo COM do nativního UnmanagedCode kódu) je potřeba, aby všichni volající měli potřebná oprávnění k tomu. Použitím tohoto explicitního atributu můžou vývojáři potlačit poptávku za běhu. Vývojář musí převzít odpovědnost za zajištění toho, že přechod na nespravovaný kód je dostatečně chráněný jinými prostředky. Poptávka po UnmanagedCode oprávnění bude stále probíhat v době propojení. Pokud je například funkce A volá funkci B a funkce B označena SuppressUnmanagedCodeSecurityAttribute, bude funkce A kontrolována pro nespravované oprávnění kódu během kompilace za běhu, ale ne následně během běhu.

Tento atribut je účinný pouze v případě, že se použije u metod PInvoke (nebo tříd obsahujících metody PInvoke) nebo definice rozhraní, prostřednictvím kterého se budou provádět volání vzájemné komunikace. Bude ignorován ve všech ostatních kontextech.

Tento atribut je užitečný pro implementaci třídy, která poskytuje přístup k systémovým prostředkům prostřednictvím nespravovaného kódu. Kód, který nemá oprávnění pro přístup k nespravovanému kódu, může volat třídu s tímto atributem pro přístup k nespravovanému kódu. To je bezpečné pouze v případě, že zapisovač třídy s tímto atributem naprogramoval třídu, aby byla zabezpečená. Pokud ne, je tento atribut nebezpečný a může povolit, aby kód, který ho používá, byl zneužit.

Nejedná se o deklarativní atribut zabezpečení, ale běžný atribut (odvozuje se od Attribute, ne SecurityAttribute).

Konstruktory

SuppressUnmanagedCodeSecurityAttribute()

Inicializuje novou instanci SuppressUnmanagedCodeSecurityAttribute třídy.

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také