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


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

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

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

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

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