方法 : アンマネージ コードへのアクセス許可を要求する

更新 : 2007 年 11 月

アクセス許可を要求するには、要求するアクセス許可を表す属性を、コードのアセンブリ レベルに適用するだけです。使用する属性は、要求するアクセス許可によって異なります。要求はコンパイルされ、アプリケーションのアセンブリ マニフェストメタデータに組み込まれ、そのコードが実行時にメモリに読み込まれるときにランタイムによって評価されます。

アンマネージ コードへのアクセス許可を要求する方法を次の例に示します。ここでは、SecurityPermissionAttribute を使用して、実行するアクセス許可要求の種類を指定する SecurityAction 値 (この例では RequestMinimum) と、要求するアクセス許可を示すフラグの 2 つの値を指定しています。この例の SecurityPermissionFlag.UnmanagedCode は、アンマネージ コードのアクセス許可に対する要求を指定しています。assembly: という構文は、属性をアセンブリ レベルに適用することをコンパイラに指示しています。

使用例

Imports System
Imports System.Security.Permissions
Imports System.Runtime.InteropServices
'The request is placed at the assembly level.
<assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, Flags := SecurityPermissionFlag.UnmanagedCode)>

Namespace MyNamespace
   Public Class MyClass1
      Public Sub New()

      End Sub
       
      Public Sub MyMethod()
         'Perform interoperation with unmanaged code here.
      End Sub 
   End Class
End Namespace
//The request is placed at the assembly level.
using System.Security.Permissions;
[assembly:SecurityPermissionAttribute(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode)]

namespace MyNamespace {
   using System;
   using System.Runtime.InteropServices;
   
   public class MyClass {
      public MyClass() {

      }
      public void MyMethod() {
        //Perform interoperation with unmanaged code here.
      }
   }
}

前のコードでは、UnmanagedCode フラグの設定された SecurityPermission をコードが受け取らないと、ランタイムから PolicyException がスローされ、コードの実行は許可されません。しかし、コードがこのアクセス許可を受け取る場合は、実行が許可されます。

参照

概念

アクセス許可の要求

参照

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

その他の技術情報

属性を使用したメタデータの拡張

コード アクセス セキュリティ

メタデータと自己言及的なコンポーネント