Sdílet prostřednictvím


Marshal.GetObjectForIUnknown(IntPtr) Metoda

Definice

Vrátí instanci typu, který představuje objekt COM ukazatelem na jeho IUnknown rozhraní.

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

Parametry

pUnk
IntPtr

nativeint

Ukazatel na IUnknown rozhraní.

Návraty

Objekt, který představuje zadaný nespravovaný objekt COM.

Atributy

Výjimky

Poznámky

Tato metoda zabalí IUnknown spravovaný objekt. To má za následek zvýšení počtu odkazů komponenty COM. Počet odkazů se sníží, když modul runtime provede uvolňování paměti pro spravovaný objekt, který představuje objekt COM.

Parametr pUnk představuje IUnknown ukazatel rozhraní, ale protože všechna rozhraní MODELU COM jsou odvozena přímo nebo nepřímo z IUnknown, můžete do této metody předat jakékoli rozhraní modelu COM. Objekt vrácený objektem je obálka volatelná za GetObjectForIUnknown běhu, kterou modul CLR (Common Language Runtime) spravuje stejně jako jakýkoli jiný spravovaný objekt. Typ této obálky je často základní System.__ComObject typ, což je skrytý typ, který se používá, když je typ obálky nejednoznačný. Stále můžete provádět volání s pozdní vazbou na takový základní typ, pokud objekt COM implementuje rozhraní IDispatch . Stejně tak můžete přetypovat vrácený objekt na odpovídající rozhraní COM.

Pokud chcete objekt zabalit pomocí konkrétního typu spravované třídy (a ne obecného typu obálky), musíte splnit následující požadavky:

Alternativně se můžete těmto požadavkům vyhnout a přesto získat objekt, který je zabalený s konkrétním typem spravované třídy, pomocí metody .Marshal.GetTypedObjectForIUnknown

Platí pro

Viz také