Marshal.GetObjectForIUnknown(IntPtr) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个类型的实例,该实例通过指向其 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 对象。
- 属性
例外
pUnk 是 Zero。
注解
此方法包装 IUnknown 在托管对象中。 这会影响递增 COM 组件的引用计数。 当运行时对表示 COM 对象的托管对象执行垃圾回收时,引用计数将递减。
该 pUnk 参数表示接口 IUnknown 指针;但是,由于所有 COM 接口直接或间接派生自 IUnknown,因此可以将任何 COM 接口传递给此方法。 返回 GetObjectForIUnknown 的对象是 运行时可调用包装器,公共语言运行时管理该包装器,就像它执行任何其他托管对象一样。 此包装器的类型通常是基 System.__ComObject 类型,它是在包装器类型不明确时使用的隐藏类型。 只要 COM 对象实现 IDispatch 接口,你仍然可以对此类基类型进行后期绑定调用。 同样,可以将返回的对象强制转换为适当的 COM 接口。
要使对象使用特定的托管类类型(而不是泛型包装器类型)进行包装,必须遵循以下要求:
实现 COM 对象的 IProvideClassInfo 接口。
使用 Regasm.exe(程序集注册工具)注册包含的程序集。
或者,可以避免这些要求,并且仍可使用 Marshal.GetTypedObjectForIUnknown 该方法获取用特定托管类类型包装的对象。