Udostępnij za pośrednictwem


Marshal.GetObjectForIUnknown(IntPtr) Metoda

Definicja

Zwraca wystąpienie typu reprezentującego obiekt COM przez wskaźnik do interfejsu 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

Parametry

pUnk
IntPtr

nativeint

Wskaźnik do interfejsu IUnknown .

Zwraca

Obiekt reprezentujący określony niezarządzany obiekt COM.

Atrybuty

Wyjątki

Uwagi

Ta metoda opakowuje IUnknown obiekt zarządzany. Ma to wpływ na zwiększanie liczby odwołań składnika COM. Liczba odwołań zostanie zdekrementowana, gdy środowisko uruchomieniowe wykonuje odzyskiwanie pamięci na zarządzanym obiekcie reprezentującym obiekt COM.

Parametr pUnk reprezentuje wskaźnik interfejsu IUnknown , jednak ponieważ wszystkie interfejsy COM pochodzą bezpośrednio lub pośrednio z IUnknownmetody , można przekazać dowolny interfejs COM do tej metody. Obiekt zwrócony przez GetObjectForIUnknown jest otoką wywołaną środowiska uruchomieniowego, którą zarządza środowisko uruchomieniowe języka wspólnego, tak jak w przypadku każdego innego zarządzanego obiektu. Typ tej otoki jest często typem podstawowym System.__ComObject , który jest ukrytym typem używanym, gdy typ otoki jest niejednoznaczny. Nadal można wykonywać późne wywołania do takiego typu podstawowego, o ile obiekt COM implementuje interfejs IDispatch . Podobnie można rzutować zwrócony obiekt do odpowiedniego interfejsu COM.

Aby obiekt był opakowany określonym typem klasy zarządzanej (a nie rodzajem otoki ogólnej), należy spełnić następujące wymagania:

Alternatywnie można uniknąć tych wymagań i nadal uzyskać obiekt opakowany określonym typem klasy zarządzanej Marshal.GetTypedObjectForIUnknown przy użyciu metody .

Dotyczy

Zobacz też