通过


Marshal.GetObjectForIUnknown(IntPtr) 方法

定义

返回一个类型的实例,该实例通过指向其 IUnknown 接口的指针表示 COM 对象。

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 对象。

属性

例外

注解

此方法包装 IUnknown 在托管对象中。 这会影响递增 COM 组件的引用计数。 当运行时对表示 COM 对象的托管对象执行垃圾回收时,引用计数将递减。

pUnk 参数表示接口 IUnknown 指针;但是,由于所有 COM 接口直接或间接派生自 IUnknown,因此可以将任何 COM 接口传递给此方法。 返回 GetObjectForIUnknown 的对象是 运行时可调用包装器,公共语言运行时管理该包装器,就像它执行任何其他托管对象一样。 此包装器的类型通常是基 System.__ComObject 类型,它是在包装器类型不明确时使用的隐藏类型。 只要 COM 对象实现 IDispatch 接口,你仍然可以对此类基类型进行后期绑定调用。 同样,可以将返回的对象强制转换为适当的 COM 接口。

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

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

适用于

另请参阅