Sdílet prostřednictvím


Marshal.GetComInterfaceForObject Metoda

Definice

Vrátí ukazatel rozhraní, který představuje rozhraní objektu.

Přetížení

GetComInterfaceForObject(Object, Type)
Zastaralé.

Vrátí ukazatel na IUnknown rozhraní, který představuje zadané rozhraní na zadaný objekt. Přístup k rozhraní vlastních dotazů je ve výchozím nastavení povolený.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Zastaralé.

Vrátí ukazatel na IUnknown rozhraní, který představuje zadané rozhraní na zadaný objekt. Přístup k rozhraní vlastních dotazů se řídí zadaným režimem přizpůsobení.

GetComInterfaceForObject<T,TInterface>(T)

Vrátí ukazatel na IUnknown rozhraní, který představuje zadané rozhraní na objektu zadaného typu. Přístup k rozhraní vlastních dotazů je ve výchozím nastavení povolený.

GetComInterfaceForObject(Object, Type)

Zdroj:
Marshal.NoCom.cs
Zdroj:
Marshal.NoCom.cs
Zdroj:
Marshal.NoCom.cs

Upozornění

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

Vrátí ukazatel na IUnknown rozhraní, který představuje zadané rozhraní na zadaný objekt. Přístup k rozhraní vlastních dotazů je ve výchozím nastavení povolený.

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

Objekt, který poskytuje rozhraní.

T
Type

Typ rozhraní, který je požadován.

Návraty

IntPtr

nativeint

Ukazatel rozhraní, který představuje zadané rozhraní pro objekt.

Atributy

Výjimky

Parametr T není rozhraní.

-nebo-

Typ není viditelný pro com.

-nebo-

Parametr T je definice obecného typu.

Parametr o nepodporuje požadované rozhraní.

Parametr o je null.

-nebo-

Parametr T je null.

Poznámky

Tato metoda vrátí ukazatel rozhraní, který představuje požadované rozhraní na zadaném objektu. Je to užitečné zejména v případě, že máte nespravovanou metodu, která očekává předání ukazatele rozhraní. Volání objektu pomocí této metody způsobí zvýšení počtu odkazů na ukazatel rozhraní před vrácením ukazatele. Po dokončení práce s ukazatelem vždy použijte Marshal.Release ke snížení počtu odkazů. Při použití nezpracovaných ukazatelů rozhraní COM je nutné dodržovat pravidla definovaná objektem COM.

GetComInterfaceForObject(Object, Type) je užitečné při volání metody, která zveřejňuje parametr objektu MODELU COM jako IntPtr typ nebo s vlastním zařazováním. I když méně časté, můžete použít tuto metodu na spravovaný objekt k získání ukazatele na objektu com volatelné obálky. Můžete například použít GetComInterfaceForObject(Object, Type) u spravovaného objektu exportovaného do modelu COM k získání ukazatele rozhraní pro System.Runtime.InteropServices.UCOMIConnectionPointContainer. Nelze získat ukazatel na rozhraní třídy, protože rozhraní třídy nemá odpovídající typ pro předání druhému parametru (t). Místo toho použijte Marshal.GetIDispatchForObject k vyvolání členů ve výchozím rozhraní obálky COM volatelné, což je obvykle rozhraní třídy automatického odeslání.

Přetížení GetComInterfaceForObject(Object, Type) metody umožňuje přizpůsobení rozhraní dotazů ve výchozím nastavení. Chcete-li určit, zda se má použít přizpůsobení rozhraní dotazu, použijte GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) přetížení metody.

Další informace naleznete v článcích Obálka volatelná model COM a Obálka volatelná za běhu .

Viz také

Platí pro

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Zdroj:
Marshal.NoCom.cs
Zdroj:
Marshal.NoCom.cs
Zdroj:
Marshal.NoCom.cs

Upozornění

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

Vrátí ukazatel na IUnknown rozhraní, který představuje zadané rozhraní na zadaný objekt. Přístup k rozhraní vlastních dotazů se řídí zadaným režimem přizpůsobení.

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

Objekt, který poskytuje rozhraní.

T
Type

Typ rozhraní, který je požadován.

mode
CustomQueryInterfaceMode

Jedna z hodnot výčtu, která určuje, jestli se má použít IUnknown::QueryInterface vlastní nastavení poskytované objektem ICustomQueryInterface.

Návraty

IntPtr

nativeint

Ukazatel rozhraní, který představuje rozhraní pro objekt.

Atributy

Výjimky

Parametr T není rozhraní.

-nebo-

Typ není viditelný pro com.

-nebo-

Parametr T je definice obecného typu.

Objekt o nepodporuje požadované rozhraní.

Parametr o je null.

-nebo-

Parametr T je null.

Poznámky

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) umožňuje určit, jestli se má použít přizpůsobení rozhraní pro dotazy. Přetížení použijte GetComInterfaceForObject(Object, Type) k použití přizpůsobení rozhraní dotazů ve výchozím nastavení.

Platí pro

GetComInterfaceForObject<T,TInterface>(T)

Zdroj:
Marshal.NoCom.cs
Zdroj:
Marshal.NoCom.cs
Zdroj:
Marshal.NoCom.cs

Vrátí ukazatel na IUnknown rozhraní, který představuje zadané rozhraní na objektu zadaného typu. Přístup k rozhraní vlastních dotazů je ve výchozím nastavení povolený.

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 .o

TInterface

Typ rozhraní, který se má vrátit.

Parametry

o
T

Objekt, který poskytuje rozhraní.

Návraty

IntPtr

nativeint

Ukazatel rozhraní, který představuje TInterface rozhraní.

Atributy

Výjimky

Parametr TInterface není rozhraní.

-nebo-

Typ není viditelný pro com.

-nebo-

Parametr T je otevřený obecný typ.

Parametr o nepodporuje TInterface rozhraní .

Parametr o je null.

Poznámky

Tato metoda vrátí ukazatel rozhraní, který představuje TInterface rozhraní na zadaném objektu. Je to užitečné zejména v případě, že máte nespravovanou metodu, která očekává předání ukazatele rozhraní. Volání objektu pomocí této metody způsobí zvýšení počtu odkazů na ukazatel rozhraní před vrácením ukazatele. Po dokončení práce s ukazatelem vždy použijte Marshal.Release metodu ke snížení počtu odkazů. Při použití nezpracovaných ukazatelů rozhraní COM je nutné dodržovat pravidla definovaná objektem COM.

GetComInterfaceForObject<T,TInterface>(T) je užitečné při volání metody, která zveřejňuje parametr objektu MODELU COM jako IntPtr typ nebo s vlastním zařazováním. Tuto metodu můžete použít také u spravovaného objektu k získání ukazatele na obálku volatelné objektem COM, i když je to méně běžné. Můžete například použít GetComInterfaceForObject<T,TInterface>(T) u spravovaného objektu exportovaného do modelu COM k získání ukazatele rozhraní pro System.Runtime.InteropServices.UCOMIConnectionPointContainer.

Přetížení GetComInterfaceForObject<T,TInterface>(T) metody umožňuje přizpůsobení rozhraní dotazů ve výchozím nastavení. Chcete-li určit, zda se má použít přizpůsobení rozhraní dotazu, použijte GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) přetížení metody.

Další informace naleznete v článcích Obálka volatelná model COM a Obálka volatelná za běhu .

Platí pro