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
не является делегатом или является универсальным.
Комментарии
Для маршалинга делегатов в обоих направлениях можно использовать 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
не является делегатом или является открытым универсальным типом.
Параметр ptr
имеет значение null
.
Комментарии
Для маршалинга делегатов в обоих направлениях можно использовать GetDelegateForFunctionPointer<TDelegate>(IntPtr) методы и GetFunctionPointerForDelegate<TDelegate>(TDelegate) .
ptr
преобразуется в делегат, который вызывает неуправляемый метод, используя соглашение о вызовах платформы по умолчанию. Соглашение о вызовах можно задать, применив UnmanagedFunctionPointerAttribute к делегату.
Метод GetDelegateForFunctionPointer<TDelegate>(IntPtr) имеет следующие ограничения:
Универсальные шаблоны не поддерживаются в сценариях взаимодействия.
Этот метод можно использовать только для чисто неуправляемых указателей на функцию.
Этот метод нельзя использовать с указателями функций, полученными с помощью C++.