Sdílet prostřednictvím


SuppressUnmanagedCodeSecurityAttribute Třída

Definice

Umožňuje spravovanému kódu volat nespravovaný kód bez procházení zásobníku. Tato třída se nemůže 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á v .NET Core žádný vliv.

Upozornění

Tento atribut používejte velmi opatrně. Nesprávné použití může způsobovat slabé stránky zabezpečení.

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

Obecně platí, že když spravovaný kód volá nespravovaný kód (pInvoke nebo zprostředkovatele komunikace COM do nativního UnmanagedCode kódu), vyžaduje se oprávnění, aby všichni volající měli potřebná oprávnění k tomu, aby to umožnili. Použitím tohoto explicitního atributu mohou 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 bude dostatečně chráněn jinými prostředky. Požadavek na UnmanagedCode oprávnění bude stále nastat v době propojení. Pokud například funkce A volá funkci B a funkce B je označena SuppressUnmanagedCodeSecurityAttribute, bude se při kompilaci za běhu ve funkci A kontrolovat oprávnění nespravovaného kódu, ale ne následně během běhu.

Tento atribut je účinný pouze při použití metody PInvoke (nebo třídy, které obsahují metody PInvoke) nebo definice rozhraní, prostřednictvím kterého budou provedena volání zprostředkovatele komunikace. Ve všech ostatních kontextech se bude ignorovat.

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 tak, aby byla zabezpečená. Pokud ne, je tento atribut nebezpečný a může umožnit zneužití kódu, který ho používá.

Nejedná se o deklarativní atribut zabezpečení, ale o běžný atribut (je odvozen z Attributeatributu , nikoli 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 tuto Attributetřídu .

(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á z aktuální instance.

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

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

(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ří mělkou kopii aktuálního Objectsouboru .

(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 pro 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é