Поделиться через


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.

Комментарии

Для маршалинга делегатов в обоих направлениях можно использовать GetDelegateForFunctionPointer методы и GetFunctionPointerForDelegate . При использовании 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.

Комментарии

Для маршалинга делегатов в обоих направлениях можно использовать GetDelegateForFunctionPointer<TDelegate>(IntPtr) методы и GetFunctionPointerForDelegate<TDelegate>(TDelegate) .

ptr преобразуется в делегат, который вызывает неуправляемый метод, используя соглашение о вызовах платформы по умолчанию. Соглашение о вызовах можно задать, применив UnmanagedFunctionPointerAttribute к делегату.

Метод GetDelegateForFunctionPointer<TDelegate>(IntPtr) имеет следующие ограничения:

  • Универсальные шаблоны не поддерживаются в сценариях взаимодействия.

  • Этот метод можно использовать только для чисто неуправляемых указателей на функцию.

  • Этот метод нельзя использовать с указателями функций, полученными с помощью C++.

Применяется к