Marshal.GetComInterfaceForObject Metoda

Definicja

Zwraca wskaźnik interfejsu reprezentujący interfejs dla obiektu.

Przeciążenia

GetComInterfaceForObject(Object, Type)
Przestarzałe.

Zwraca wskaźnik do interfejsu IUnknown , który reprezentuje określony interfejs w określonym obiekcie. Dostęp do niestandardowego interfejsu zapytań jest domyślnie włączony.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Przestarzałe.

Zwraca wskaźnik do interfejsu IUnknown , który reprezentuje określony interfejs w określonym obiekcie. Dostęp do niestandardowego interfejsu zapytań jest kontrolowany przez określony tryb dostosowywania.

GetComInterfaceForObject<T,TInterface>(T)

Zwraca wskaźnik do interfejsu IUnknown , który reprezentuje określony interfejs na obiekcie określonego typu. Dostęp do niestandardowego interfejsu zapytań jest domyślnie włączony.

GetComInterfaceForObject(Object, Type)

Źródło:
Marshal.NoCom.cs
Źródło:
Marshal.NoCom.cs
Źródło:
Marshal.NoCom.cs

Przestroga

GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509

Zwraca wskaźnik do interfejsu IUnknown , który reprezentuje określony interfejs w określonym obiekcie. Dostęp do niestandardowego interfejsu zapytań jest domyślnie włączony.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T);
[System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
public static IntPtr GetComInterfaceForObject (object o, Type T);
[<System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

Parametry

o
Object

Obiekt, który udostępnia interfejs.

T
Type

Żądany typ interfejsu.

Zwraca

IntPtr

nativeint

Wskaźnik interfejsu reprezentujący określony interfejs dla obiektu.

Atrybuty

Wyjątki

Parametr T nie jest interfejsem.

-lub-

Typ nie jest widoczny dla modelu COM.

-lub-

Parametr T jest definicją typu ogólnego.

Parametr o nie obsługuje żądanego interfejsu.

Parametr o to null.

-lub-

Parametr T to null.

Uwagi

Ta metoda zwraca wskaźnik interfejsu, który reprezentuje żądany interfejs w określonym obiekcie. Jest to szczególnie przydatne, jeśli masz niezarządzaną metodę, która oczekuje przekazania wskaźnika interfejsu. Wywołanie obiektu za pomocą tej metody powoduje, że liczba odwołań zwiększa wskaźnik interfejsu przed zwróceniem wskaźnika. Zawsze używaj polecenia Marshal.Release , aby zdekrementować liczbę odwołań po zakończeniu pracy ze wskaźnikiem. W przypadku używania nieprzetworzonych wskaźników interfejsu COM należy przestrzegać reguł zdefiniowanych przez model COM.

GetComInterfaceForObject(Object, Type) jest przydatne podczas wywoływania metody, która uwidacznia parametr obiektu COM jako IntPtr typ lub z niestandardowym marshalingiem. Mimo że ta metoda jest mniej powszechna, można użyć tej metody w obiekcie zarządzanym, aby uzyskać wskaźnik do zawijanej otoki COM obiektu. Można na przykład użyć GetComInterfaceForObject(Object, Type) obiektu zarządzanego wyeksportowanego do modelu COM w celu uzyskania wskaźnika interfejsu dla System.Runtime.InteropServices.UCOMIConnectionPointContainerelementu . Nie można uzyskać wskaźnika do interfejsu klasy, ponieważ interfejs klasy nie ma odpowiedniego typu do przekazania do drugiego parametru (t). Zamiast tego użyj polecenia Marshal.GetIDispatchForObject , aby wywołać elementy członkowskie w domyślnym interfejsie otoki wywołującej com, która jest zwykle interfejsem klasy automatycznego wysyłania.

Przeciążenie GetComInterfaceForObject(Object, Type) metody domyślnie zezwala na dostosowywanie interfejsu zapytania. Aby określić, czy zastosować dostosowywanie interfejsu GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) zapytania, użyj przeciążenia metody.

Aby uzyskać dodatkowe informacje, zobacz artykuły Com Callable Wrapper and Runtime Callable Wrapper (Zawijane zawijane wywołania środowiska uruchomieniowego i zawijane środowisko uruchomieniowe).

Zobacz też

Dotyczy

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Źródło:
Marshal.NoCom.cs
Źródło:
Marshal.NoCom.cs
Źródło:
Marshal.NoCom.cs

Przestroga

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.

Zwraca wskaźnik do interfejsu IUnknown , który reprezentuje określony interfejs w określonym obiekcie. Dostęp do niestandardowego interfejsu zapytań jest kontrolowany przez określony tryb dostosowywania.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T, System::Runtime::InteropServices::CustomQueryInterfaceMode mode);
[System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[<System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type, mode As CustomQueryInterfaceMode) As IntPtr

Parametry

o
Object

Obiekt, który udostępnia interfejs.

T
Type

Żądany typ interfejsu.

mode
CustomQueryInterfaceMode

Jedna z wartości wyliczenia wskazująca, czy zastosować IUnknown::QueryInterface dostosowanie dostarczone przez element ICustomQueryInterface.

Zwraca

IntPtr

nativeint

Wskaźnik interfejsu reprezentujący interfejs dla obiektu.

Atrybuty

Wyjątki

Parametr T nie jest interfejsem.

-lub-

Typ nie jest widoczny dla modelu COM.

-lub-

Parametr T jest definicją typu ogólnego.

Obiekt o nie obsługuje żądanego interfejsu.

Parametr o to null.

-lub-

Parametr T to null.

Uwagi

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) umożliwia określenie, czy mają być stosowane dostosowania interfejsu zapytania. Użyj przeciążenia, aby domyślnie zastosować dostosowywanie interfejsu GetComInterfaceForObject(Object, Type) zapytania.

Dotyczy

GetComInterfaceForObject<T,TInterface>(T)

Źródło:
Marshal.NoCom.cs
Źródło:
Marshal.NoCom.cs
Źródło:
Marshal.NoCom.cs

Zwraca wskaźnik do interfejsu IUnknown , który reprezentuje określony interfejs na obiekcie określonego typu. Dostęp do niestandardowego interfejsu zapytań jest domyślnie włączony.

public:
generic <typename T, typename TInterface>
 static IntPtr GetComInterfaceForObject(T o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : 'T -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : 'T -> nativeint
static member GetComInterfaceForObject : 'T -> nativeint
Public Shared Function GetComInterfaceForObject(Of T, TInterface) (o As T) As IntPtr

Parametry typu

T

Typ elementu o.

TInterface

Typ interfejsu do zwrócenia.

Parametry

o
T

Obiekt, który udostępnia interfejs.

Zwraca

IntPtr

nativeint

Wskaźnik interfejsu TInterface reprezentujący interfejs.

Atrybuty

Wyjątki

Parametr TInterface nie jest interfejsem.

-lub-

Typ nie jest widoczny dla modelu COM.

-lub-

Parametr T jest otwartym typem ogólnym.

Parametr o nie obsługuje interfejsu TInterface .

Parametr o to null.

Uwagi

Ta metoda zwraca wskaźnik interfejsu, który reprezentuje TInterface interfejs w określonym obiekcie. Jest to szczególnie przydatne, jeśli masz niezarządzaną metodę, która oczekuje przekazania wskaźnika interfejsu. Wywołanie obiektu za pomocą tej metody powoduje, że liczba odwołań zwiększa wskaźnik interfejsu przed zwróceniem wskaźnika. Zawsze używaj Marshal.Release metody , aby zdekrementować liczbę odwołań po zakończeniu pracy ze wskaźnikiem. W przypadku używania nieprzetworzonych wskaźników interfejsu COM należy przestrzegać reguł zdefiniowanych przez model COM.

GetComInterfaceForObject<T,TInterface>(T) jest przydatne podczas wywoływania metody, która uwidacznia parametr obiektu COM jako IntPtr typ lub z niestandardowym marshalingiem. Można również użyć tej metody w obiekcie zarządzanym, aby uzyskać wskaźnik do otoki wywołującej COM obiektu, chociaż jest to mniej powszechne. Można na przykład użyć GetComInterfaceForObject<T,TInterface>(T) obiektu zarządzanego wyeksportowanego do modelu COM w celu uzyskania wskaźnika interfejsu dla System.Runtime.InteropServices.UCOMIConnectionPointContainerelementu .

Przeciążenie GetComInterfaceForObject<T,TInterface>(T) metody domyślnie zezwala na dostosowywanie interfejsu zapytania. Aby określić, czy zastosować dostosowywanie interfejsu GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) zapytania, użyj przeciążenia metody.

Aby uzyskać dodatkowe informacje, zobacz artykuły Com Callable Wrapper and Runtime Callable Wrapper (Zawijane zawijane wywołania środowiska uruchomieniowego i zawijane środowisko uruchomieniowe).

Dotyczy