Marshal.GetObjectForIUnknown(IntPtr) Metoda

Definicja

Zwraca wystąpienie typu reprezentującego obiekt COM przez wskaźnik do jego 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 się w obiekcie zarządzanym. Ma to wpływ na zwiększanie liczby odwołań składnika COM. Liczba odwołań zostanie zdekrementowana, gdy środowisko uruchomieniowe wykona 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 IUnknownklasy , można przekazać dowolny interfejs COM do tej metody. Obiekt zwracany przez GetObjectForIUnknown jest otoką wywoływaną środowiska uruchomieniowego, którą środowisko uruchomieniowe języka wspólnego zarządza tak samo jak każdy inny obiekt zarządzany. 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ć wywołania opóźnione 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ł owinięty określonym typem klasy zarządzanej (a nie ogólnym typem otoki), należy spełnić następujące wymagania:

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

Dotyczy

Zobacz też