SuppressUnmanagedCodeSecurityAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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) |