次の方法で共有


UnmanagedCallersOnlyAttribute クラス

定義

UnmanagedCallersOnlyAttribute のマークが付いているメソッドは、ネイティブ コードから直接呼び出すことができます。 関数トークンは C# で address-of 演算子を使用してローカル変数に読み込み、コールバックとしてネイティブ メソッドに渡すことができます。

public ref class UnmanagedCallersOnlyAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class UnmanagedCallersOnlyAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type UnmanagedCallersOnlyAttribute = class
    inherit Attribute
Public NotInheritable Class UnmanagedCallersOnlyAttribute
Inherits Attribute
継承
UnmanagedCallersOnlyAttribute
属性

次の例では、ネイティブ関数にマークされた UnmanagedCallersOnlyAttribute コールバックを渡す方法を示します。

[DllImport("NativeLibrary")]
internal static extern unsafe void NativeFunctionWithCallback(delegate* unmanaged[Cdecl]<int, int> callback);

[UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvCdecl) })]
private static int DoubleInt(int i) => i * 2;

public static unsafe void PassCallbackToNativeFunction()
{
    NativeFunctionWithCallback(&DoubleInt);
}

注釈

この属性でマークされたメソッドには、次の制限があります。

  • をマーク staticする必要があります。
  • マネージド コードから呼び出さないでください。
  • blittable 引数のみを指定する必要があります。
  • ジェネリック型パラメーターを含めたり、ジェネリック クラスに含めたりすることはできません。

コンストラクター

UnmanagedCallersOnlyAttribute()

新しい UnmanagedCallersOnlyAttribute インスタンスを初期化します。

フィールド

CallConvs

省略可能。 省略すると、ランタイムは 既定のプラットフォーム呼び出し規則を使用します。

EntryPoint

省略可能。 省略した場合、名前のないエクスポートがコンパイル中に生成されます。

プロパティ

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。

(継承元 Attribute)

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象