次の方法で共有


SuppressUnmanagedCodeSecurityAttribute クラス

スタック ウォークを使用せずにマネージ コードがアンマネージ コードを呼び出すことができるようにします。このクラスは継承できません。

この型のすべてのメンバの一覧については、SuppressUnmanagedCodeSecurityAttribute メンバ を参照してください。

System.Object
   System.Attribute
      System.Security.SuppressUnmanagedCodeSecurityAttribute

<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Method _
   Or AttributeTargets.Interface)>
NotInheritable Public Class SuppressUnmanagedCodeSecurityAttribute   Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method |
   AttributeTargets.Interface)]
public sealed class SuppressUnmanagedCodeSecurityAttribute :   Attribute
[C++]
[AttributeUsage(AttributeTargets::Class | AttributeTargets::Method
   | AttributeTargets::Interface)]
public __gc __sealed class SuppressUnmanagedCodeSecurityAttribute   : public Attribute
[JScript]
public
   AttributeUsage(AttributeTargets.Class | AttributeTargets.Method |
   AttributeTargets.Interface)
class SuppressUnmanagedCodeSecurityAttribute extends   Attribute

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

注意   この属性は特に注意して使用してください。使用方法を誤ると、セキュリティの脆弱性の発生につながるおそれがあります。

この属性は、ランタイム セキュリティ チェックの効率を低下させずに、ネイティブ コードを読み込む必要のあるメソッドに適用できます。アンマネージ コードを呼び出すときに実行されたスタック ウォークが実行時に省かれ、大幅に効率が向上します。クラス内でこの属性を使用すると、格納されているすべてのメソッドに適用されます。

一般的に、マネージ コードがアンマネージ コードを呼び出す (PInvoke または COM 相互運用機能を使用してネイティブ コードを呼び出す) 場合は、アンマネージ コードを呼び出すために必要なアクセス許可がすべての呼び出し元に対して与えられるようにするために、 UnmanagedCode アクセス許可が要求されます。この明示的な属性を適用することによって、開発者は実行時に要求が行われないようにすることができます。開発者は、アンマネージ コードへの移行が他の手段によって十分に保護されていることを確認する必要があります。 UnmanagedCode アクセス許可の要求は、リンク時にまだ発生します。たとえば、関数 A が関数 B を呼び出し、関数 B が SuppressUnmanagedCodeSecurityAttribute でマークされている場合は、関数 A にアンマネージ コードのアクセス許可が与えられているかどうかがジャスト イン タイム コンパイル時にチェックされますが、その後の実行時にはチェックされません。

この属性は、PInvoke メソッド (または PInvoke メソッドを格納しているクラス)、または相互運用呼び出しに使用するインターフェイスの定義に適用する場合にだけ有効です。その他のすべてのコンテキストでは無視されます。

この属性は、アンマネージ コードを通じてシステム リソースへアクセスできるようにするクラスを実装するときに役立ちます。アンマネージ コードへのアクセス許可がないコードは、この属性を持つクラスを呼び出して、アンマネージ コードにアクセスできます。このようにアンマネージ コードにアクセスする場合、この属性を持つクラスのライタによってクラスがセキュリティ設定されるようにプログラムされている場合に限り、安全が確保されます。それ以外の場合は、この属性は危険であり、この属性を使用するコードが不正に使用される可能性があります。

この属性は宣言セキュリティ属性ではありませんが、標準属性です。 SecurityAttribute ではなく Attribute から派生します。

必要条件

名前空間: System.Security

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

SuppressUnmanagedCodeSecurityAttribute メンバ | System.Security 名前空間 | 属性を使用したメタデータの拡張 | セキュリティの最適化