Share via


SuppressUnmanagedCodeSecurityAttribute Kelas

Definisi

Memungkinkan kode terkelola memanggil kode yang tidak dikelola tanpa stack walk. Kelas ini tidak dapat diwariskan.

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
Warisan
SuppressUnmanagedCodeSecurityAttribute
Atribut

Keterangan

Penting

Kode yang dipercaya sebagian tidak lagi didukung. Atribut ini tidak berpengaruh pada .NET Core.

Perhatian

Gunakan atribut ini dengan perawatan ekstrem. Penggunaan yang salah dapat menciptakan kelemahan keamanan.

Atribut ini dapat diterapkan ke metode yang ingin dipanggil ke dalam kode asli tanpa menimbulkan kehilangan performa pemeriksaan keamanan run-time saat melakukannya. Stack walk yang dilakukan saat memanggil kode yang tidak dikelola dihilangkan pada durasi, menghasilkan penghematan performa yang besar. Menggunakan atribut ini di kelas menerapkannya ke semua metode yang terkandung.

Umumnya, setiap kali kode terkelola memanggil ke dalam kode yang tidak dikelola (oleh interop PInvoke atau COM ke dalam kode asli), ada permintaan untuk UnmanagedCode izin untuk memastikan semua penelepon memiliki izin yang diperlukan untuk mengizinkan ini. Dengan menerapkan atribut eksplisit ini, pengembang dapat menekan permintaan pada durasi. Pengembang harus bertanggung jawab untuk memastikan bahwa transisi ke kode yang tidak dikelola cukup dilindungi dengan cara lain. Permintaan izin UnmanagedCode masih akan terjadi pada waktu tautan. Misalnya, jika fungsi A memanggil fungsi B dan fungsi B ditandai dengan SuppressUnmanagedCodeSecurityAttribute, fungsi A akan diperiksa untuk izin kode yang tidak dikelola selama kompilasi just-in-time, tetapi tidak kemudian selama durasi.

Atribut ini hanya efektif ketika diterapkan ke metode PInvoke (atau kelas yang berisi metode PInvoke) atau definisi antarmuka tempat panggilan interop akan dilakukan. Ini akan diabaikan dalam semua konteks lainnya.

Atribut ini berguna untuk menerapkan kelas yang menyediakan akses ke sumber daya sistem melalui kode yang tidak dikelola. Kode yang tidak memiliki izin untuk mengakses kode yang tidak dikelola dapat memanggil kelas dengan atribut ini untuk mengakses kode yang tidak dikelola. Ini hanya aman jika penulis kelas dengan atribut ini telah memprogram kelas agar aman. Jika tidak, atribut ini berbahaya dan dapat memungkinkan kode yang menggunakannya untuk disalahgunakan.

Ini bukan atribut keamanan deklaratif, tetapi atribut reguler (berasal dari Attribute, bukan SecurityAttribute).

Konstruktor

SuppressUnmanagedCodeSecurityAttribute()

Menginisialisasi instans baru kelas SuppressUnmanagedCodeSecurityAttribute.

Properti

TypeId

Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute.

(Diperoleh dari Attribute)

Metode

Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
GetHashCode()

Mengembalikan kode hash untuk instans ini.

(Diperoleh dari Attribute)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
IsDefaultAttribute()

Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan.

(Diperoleh dari Attribute)
Match(Object)

Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

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

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

(Diperoleh dari Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

(Diperoleh dari Attribute)

Berlaku untuk

Lihat juga