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
介面的指標。
傳回
表示指定之 Unmanaged COM 物件的物件。
- 屬性
例外狀況
pUnk
為 Zero。
備註
這個方法會 IUnknown
包裝在Managed物件中。 這會影響遞增 COM元件的參考計數。 當運行時間對代表 COM 物件的 Managed 物件執行垃圾收集時,將會遞減參考計數。
參數 pUnk
代表 IUnknown
介面指標;不過,因為所有 COM 介面直接或間接衍生自 IUnknown
,您可以將任何 COM 介面傳遞至這個方法。 所 GetObjectForIUnknown 傳回的對像是運行時間 可呼叫包裝函式,Common Language Runtime 會如同任何其他 Managed 對象一樣管理。 此包裝函式的類型通常是基底 System.__ComObject
類型,這是包裝函式類型模棱兩可時所使用的隱藏類型。 只要 COM 物件實作 IDispatch 介面,您仍然可以對這類基底類型進行晚期綁定呼叫。 同樣地,您可以將傳回的物件轉換成適當的 COM 介面。
若要使用特定 Managed 類別類型 (而非泛型包裝函式類型) 的物件,您必須遵循下列需求:
實作 COM 物件的 IProvideClassInfo 介面。
或者,您也可以避免這些需求,而且仍然可以使用 Marshal.GetTypedObjectForIUnknown 方法來取得以特定 Managed 類別類型包裝的物件。