Marshal.GetObjectForIUnknown(IntPtr) Метод

Определение

Возвращает экземпляр типа, представляющего COM-объект указателем на его интерфейс IUnknown .

public:
 static System::Object ^ GetObjectForIUnknown(IntPtr pUnk);
[System.Security.SecurityCritical]
public static object GetObjectForIUnknown(IntPtr pUnk);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object GetObjectForIUnknown(IntPtr pUnk);
public static object GetObjectForIUnknown(IntPtr pUnk);
[<System.Security.SecurityCritical>]
static member GetObjectForIUnknown : nativeint -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObjectForIUnknown : nativeint -> obj
static member GetObjectForIUnknown : nativeint -> obj
Public Shared Function GetObjectForIUnknown (pUnk As IntPtr) As Object

Параметры

pUnk
IntPtr

nativeint

Указатель на IUnknown интерфейс.

Возвращаемое значение

Объект, представляющий указанный неуправляемый COM-объект.

Атрибуты

Исключения

pUnk равно Zero.

Комментарии

Этот метод упаковывается IUnknown в управляемый объект. Это влияет на увеличение количества ссылок компонента COM. Количество ссылок будет уменьшаться, когда среда выполнения выполняет сборку мусора в управляемом объекте, представляющего COM-объект.

Параметр pUnk представляет указатель интерфейса. Однако, так как все интерфейсы COM являются производными напрямую или косвенноIUnknown, вы можете передать любой IUnknown COM-интерфейс этому методу. Объект, возвращаемый GetObjectForIUnknown средой выполнения, является вызываемой оболочкой среды выполнения, которая управляет средой CLR, так как она выполняет любой другой управляемый объект. Тип этой оболочки часто является базовым System.__ComObject типом, который является скрытым типом, используемым при неоднозначном типе оболочки. Вы по-прежнему можете выполнять вызовы с поздними привязками к такому базовому типу, пока com-объект реализует интерфейс IDispatch . Аналогичным образом можно привести возвращаемый объект в соответствующий COM-интерфейс.

Чтобы объект был упакован с определенным типом управляемого класса (а не универсальным типом оболочки), необходимо соответствовать следующим требованиям:

Кроме того, можно избежать этих требований и по-прежнему получить объект, который упакован с определенным типом управляемого класса с помощью Marshal.GetTypedObjectForIUnknown метода.

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

См. также раздел