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 的对象是 运行时可调用包装器,公共语言运行时将像管理任何其他托管对象一样对其进行管理。 此包装的类型通常是基 System.__ComObject 类型,它是在包装类型不明确时使用的隐藏类型。 只要 COM 对象实现 IDispatch 接口,就仍然可以对此类基类型进行后期绑定调用。 同样,可以将返回的对象强制转换为相应的 COM 接口。

对于要用特定托管类类型 (而不是泛型包装器类型) 包装的对象,必须遵守以下要求:

或者,你可以避免这些要求,并且仍然使用 Marshal.GetTypedObjectForIUnknown 方法获取用特定托管类类型包装的对象。

适用于

另请参阅