次の方法で共有


Marshal.GetDelegateForFunctionPointer メソッド

定義

オーバーロード

GetDelegateForFunctionPointer(IntPtr, Type)
古い.

アンマネージ関数ポインターをデリゲートに変換します。

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

アンマネージ関数ポインターを指定した型のデリゲートに変換します。

GetDelegateForFunctionPointer(IntPtr, Type)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

注意事項

GetDelegateForFunctionPointer(IntPtr, Type) may be unavailable in future releases. Instead, use GetDelegateForFunctionPointer<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296521

アンマネージ関数ポインターをデリゲートに変換します。

public:
 static Delegate ^ GetDelegateForFunctionPointer(IntPtr ptr, Type ^ t);
[System.Obsolete("GetDelegateForFunctionPointer(IntPtr, Type) may be unavailable in future releases. Instead, use GetDelegateForFunctionPointer<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296521")]
[System.Security.SecurityCritical]
public static Delegate GetDelegateForFunctionPointer (IntPtr ptr, Type t);
public static Delegate GetDelegateForFunctionPointer (IntPtr ptr, Type t);
[System.Security.SecurityCritical]
public static Delegate GetDelegateForFunctionPointer (IntPtr ptr, Type t);
[<System.Obsolete("GetDelegateForFunctionPointer(IntPtr, Type) may be unavailable in future releases. Instead, use GetDelegateForFunctionPointer<T>(IntPtr). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296521")>]
[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
Public Shared Function GetDelegateForFunctionPointer (ptr As IntPtr, t As Type) As Delegate

パラメーター

ptr
IntPtr

nativeint

変換するアンマネージ関数ポインター。

t
Type

返されるデリゲートの型。

戻り値

適切なデリゲート型にキャストできるデリゲート インスタンス。

属性

例外

t パラメーターは、デリゲートでもジェネリックでもありません。

ptr パラメーターが null です。

または

t パラメーターが null です。

注釈

メソッドと GetFunctionPointerForDelegate メソッドをGetDelegateForFunctionPointer使用して、デリゲートを双方向にマーシャリングできます。 ではGetDelegateForFunctionPointerptr、 は としてSystem.IntPtrインポートされます。 System.IntPtrを呼び出GetFunctionPointerForDelegateしてパラメーターとして渡すことで、マネージド デリゲートの を取得できます。その後、アンマネージ メソッド内から呼び出すことができます。 パラメーター マーシャラーでは、.NET Framework 2.0 以降のバージョンのデリゲートへの関数ポインターをマーシャリングすることもできます。

ptr は、既定のプラットフォーム呼び出し規則を使用してアンマネージ メソッド を呼び出すデリゲートに変換されます。 呼び出し規約を設定するには、 を UnmanagedFunctionPointerAttribute デリゲートに適用します。

GetDelegateForFunctionPointerメソッドには、次の制限があります。

  • ジェネリックは、相互運用シナリオではサポートされていません。

  • このメソッドは、純粋なアンマネージ関数ポインターに対してのみ使用できます。

  • このメソッドは、C++ を介して取得された関数ポインターでは使用できません。

適用対象

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

アンマネージ関数ポインターを指定した型のデリゲートに変換します。

public:
generic <typename TDelegate>
 static TDelegate GetDelegateForFunctionPointer(IntPtr ptr);
[System.Security.SecurityCritical]
public static TDelegate GetDelegateForFunctionPointer<TDelegate> (IntPtr ptr);
public static TDelegate GetDelegateForFunctionPointer<TDelegate> (IntPtr ptr);
[<System.Security.SecurityCritical>]
static member GetDelegateForFunctionPointer : nativeint -> 'Delegate
static member GetDelegateForFunctionPointer : nativeint -> 'Delegate
Public Shared Function GetDelegateForFunctionPointer(Of TDelegate) (ptr As IntPtr) As TDelegate

型パラメーター

TDelegate

返すデリゲートの型。

パラメーター

ptr
IntPtr

nativeint

変換するアンマネージ関数ポインター。

戻り値

TDelegate

指定したデリゲート型のインスタンス。

属性

例外

TDelegate ジェネリック パラメーターはデリゲートでない、またはオープン ジェネリック型です。

ptr パラメーターが null です。

注釈

メソッドと GetFunctionPointerForDelegate<TDelegate>(TDelegate) メソッドをGetDelegateForFunctionPointer<TDelegate>(IntPtr)使用して、デリゲートを双方向にマーシャリングできます。

ptr は、既定のプラットフォーム呼び出し規則を使用してアンマネージ メソッド を呼び出すデリゲートに変換されます。 呼び出し規約を設定するには、 を UnmanagedFunctionPointerAttribute デリゲートに適用します。

GetDelegateForFunctionPointer<TDelegate>(IntPtr)メソッドには、次の制限があります。

  • ジェネリックは、相互運用シナリオではサポートされていません。

  • このメソッドは、純粋なアンマネージ関数ポインターに対してのみ使用できます。

  • このメソッドは、C++ を介して取得された関数ポインターでは使用できません。

適用対象