Marshal.GetObjectForIUnknown(IntPtr) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
pUnk
je Zero.
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:
Implementujte rozhraní IProvideClassInfo pro objekt COM.
Zaregistrujte obsahující sestavení pomocí Regasm.exe (nástroj pro registraci sestavení).
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