Marshal.GetDelegateForFunctionPointer Marshal.GetDelegateForFunctionPointer Marshal.GetDelegateForFunctionPointer Marshal.GetDelegateForFunctionPointer Method

定義

オーバーロード

GetDelegateForFunctionPointer(IntPtr, Type) GetDelegateForFunctionPointer(IntPtr, Type) GetDelegateForFunctionPointer(IntPtr, Type) GetDelegateForFunctionPointer(IntPtr, Type)

アンマネージ関数ポインターをデリゲートに変換します。Converts an unmanaged function pointer to a delegate.

GetDelegateForFunctionPointer<TDelegate>(IntPtr) GetDelegateForFunctionPointer<TDelegate>(IntPtr) GetDelegateForFunctionPointer<TDelegate>(IntPtr) GetDelegateForFunctionPointer<TDelegate>(IntPtr)

[.NET Framework 4.5.1 以降のバージョンでサポート][Supported in the .NET Framework 4.5.1 and later versions]

アンマネージ関数ポインターを指定した型のデリゲートに変換します。Converts an unmanaged function pointer to a delegate of a specified type.

GetDelegateForFunctionPointer(IntPtr, Type) GetDelegateForFunctionPointer(IntPtr, Type) GetDelegateForFunctionPointer(IntPtr, Type) GetDelegateForFunctionPointer(IntPtr, Type)

警告

この API は現在使われていません。

アンマネージ関数ポインターをデリゲートに変換します。Converts an unmanaged function pointer to a delegate.

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);
static member GetDelegateForFunctionPointer : nativeint * Type -> Delegate
Public Shared Function GetDelegateForFunctionPointer (ptr As IntPtr, t As Type) As Delegate

パラメーター

ptr
IntPtr IntPtr IntPtr IntPtr

変換するアンマネージ関数ポインター。The unmanaged function pointer to be converted.

t
Type Type Type Type

返されるデリゲートの型。The type of the delegate to be returned.

戻り値

適切なデリゲート型にキャストできるデリゲート インスタンス。A delegate instance that can be cast to the appropriate delegate type.

例外

t パラメーターは、デリゲートでもジェネリックでもありません。The t parameter is not a delegate or is generic.

ptr パラメーターが null です。The ptr parameter is null.

- または --or- t パラメーターが null です。The t parameter is null.

注釈

.NET Framework のバージョン1.0 および1.1 では、マネージメソッドを表すデリゲートを関数ポインターとしてアンマネージコードに渡すことができました。これにより、アンマネージコードは、関数ポインターを介してマネージメソッドを呼び出すことができます。In versions 1.0 and 1.1 of the .NET Framework, it was possible to pass a delegate representing a managed method to unmanaged code as a function pointer, allowing the unmanaged code to call the managed method through the function pointer. また、アンマネージコードがその関数ポインターをマネージコードに渡し、ポインターが基になるマネージメソッドに対して適切に解決された可能性もあります。It was also possible for the unmanaged code to pass that function pointer back to the managed code, and the pointer was resolved properly to the underlying managed method.

.NET Framework 2.0 以降のバージョンでは、メソッドGetDelegateForFunctionPointerGetFunctionPointerForDelegateメソッドを使用して、双方向のデリゲートをマーシャリングできます。In the .NET Framework 2.0 and later versions, you can use the GetDelegateForFunctionPointer and GetFunctionPointerForDelegate methods to marshal delegates in both directions. GetDelegateForFunctionPointerptr 、はとしSystem.IntPtrてインポートされます。With GetDelegateForFunctionPointer, ptr is imported as a System.IntPtr. System.IntPtr 、を呼び出しGetFunctionPointerForDelegate 、パラメーターとして渡すことによって、マネージデリゲートに対して取得できます。その後、アンマネージメソッド内から呼び出すことができます。A System.IntPtr can be obtained for a managed delegate by calling GetFunctionPointerForDelegate and passed as a parameter; it can then be called from inside the unmanaged method. パラメーターマーシャラーは、.NET Framework 2.0 以降のバージョンでは、関数ポインターをデリゲートにマーシャリングすることもできます。Note that the parameter marshaler can also marshal function pointers to delegates in the .NET Framework 2.0 and later versions.

GetDelegateForFunctionPointerメソッドには、次の制限があります。The GetDelegateForFunctionPointer method has the following restrictions:

  • ジェネリックは、相互運用シナリオではサポートされていません。Generics are not supported in interop scenarios.

  • このメソッドに無効な関数ポインターを渡すことはできません。You cannot pass an invalid function pointer to this method.

  • このメソッドは、純粋なアンマネージ関数ポインターに対してのみ使用できます。You can use this method only for pure unmanaged function pointers.

  • このメソッドC++は、 GetFunctionPointerまたはメソッドから取得した関数ポインターと共に使用することはできません。You cannot use this method with function pointers obtained through C++ or from the GetFunctionPointer method.

  • このメソッドを使用して、別のマネージデリゲートへの関数ポインターからデリゲートを作成することはできません。You cannot use this method to create a delegate from a function pointer to another managed delegate.

セキュリティ

SecurityCriticalAttribute
直前の呼び出し元に完全信頼が必要です。requires full trust for the immediate caller. このメンバーは、部分的に信頼されているコードまたは透過的なコードでは使用できません。This member cannot be used by partially trusted or transparent code.

GetDelegateForFunctionPointer<TDelegate>(IntPtr) GetDelegateForFunctionPointer<TDelegate>(IntPtr) GetDelegateForFunctionPointer<TDelegate>(IntPtr) GetDelegateForFunctionPointer<TDelegate>(IntPtr)

[.NET Framework 4.5.1 以降のバージョンでサポート][Supported in the .NET Framework 4.5.1 and later versions]

アンマネージ関数ポインターを指定した型のデリゲートに変換します。Converts an unmanaged function pointer to a delegate of a specified type.

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

型パラメーター

TDelegate

返すデリゲートの型。The type of the delegate to return.

パラメーター

ptr
IntPtr IntPtr IntPtr IntPtr

変換するアンマネージ関数ポインター。The unmanaged function pointer to convert.

戻り値

TDelegate TDelegate TDelegate TDelegate

指定したデリゲート型のインスタンス。A instance of the specified delegate type.

例外

TDelegate ジェネリック パラメーターはデリゲートでない、またはオープン ジェネリック型です。The TDelegate generic parameter is not a delegate, or it is an open generic type.

ptr パラメーターが null です。The ptr parameter is null.

注釈

メソッドGetDelegateForFunctionPointer<TDelegate>(IntPtr)とメソッドを使用GetFunctionPointerForDelegate<TDelegate>(TDelegate)して、双方向のデリゲートをマーシャリングできます。You can use the GetDelegateForFunctionPointer<TDelegate>(IntPtr) and GetFunctionPointerForDelegate<TDelegate>(TDelegate) methods to marshal delegates in both directions.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)メソッドには、次の制限があります。The GetDelegateForFunctionPointer<TDelegate>(IntPtr) method has the following restrictions:

  • このメソッドに無効な関数ポインターを渡すことはできません。You cannot pass an invalid function pointer to this method.

  • このメソッドは、純粋なアンマネージ関数ポインターに対してのみ使用できます。You can use this method only for pure unmanaged function pointers.

  • このメソッドC++は、 GetFunctionPointerまたはメソッドから取得した関数ポインターと共に使用することはできません。You cannot use this method with function pointers obtained through C++ or from the GetFunctionPointer method.

  • このメソッドを使用して、別のマネージデリゲートへの関数ポインターからデリゲートを作成することはできません。You cannot use this method to create a delegate from a function pointer to another managed delegate.

セキュリティ

SecurityCriticalAttribute
直前の呼び出し元に完全信頼が必要です。requires full trust for the immediate caller. このメンバーは、部分的に信頼されているコードまたは透過的なコードでは使用できません。This member cannot be used by partially trusted or transparent code.

適用対象