Marshal.GetObjectForIUnknown(IntPtr) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个类型实例,该实例通过指向 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 接口。
对于要用特定托管类类型 (而不是泛型包装器类型) 包装的对象,必须遵守以下要求:
实现 COM 对象的 IProvideClassInfo 接口。
或者,你可以避免这些要求,并且仍然使用 Marshal.GetTypedObjectForIUnknown 方法获取用特定托管类类型包装的对象。