Marshal.GetObjectForIUnknown(IntPtr) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
pUnk
to Zero.
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 IUnknown
klasy , 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:
Zaimplementuj interfejs IProvideClassInfo dla obiektu COM.
Zarejestruj zestaw zawierający w Regasm.exe (narzędzie rejestracji zestawów).
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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla