Marshal.GetComInterfaceForObject Metoda

Definice

Vrátí ukazatel rozhraní, který představuje rozhraní objektu.Returns an interface pointer that represents an interface for an object.

Přetížení

GetComInterfaceForObject(Object, Type)

Vrací ukazatel na rozhraní IUnknown , které představuje zadané rozhraní na zadaném objektu.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Ve výchozím nastavení je povolený přístup k rozhraní vlastního dotazu.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Vrací ukazatel na rozhraní IUnknown , které představuje zadané rozhraní na zadaném objektu.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Přístup k rozhraní vlastního dotazu se řídí zadaným režimem přizpůsobení.Custom query interface access is controlled by the specified customization mode.

GetComInterfaceForObject<T,TInterface>(T)

[Podporováno v .NET Framework 4.5.1 a novějších verzích][Supported in the .NET Framework 4.5.1 and later versions] Vrací ukazatel na rozhraní IUnknown , které představuje zadané rozhraní na objektu zadaného typu.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. Ve výchozím nastavení je povolený přístup k rozhraní vlastního dotazu.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type)

Varování

Toto rozhraní API je teď zastaralé.

Vrací ukazatel na rozhraní IUnknown , které představuje zadané rozhraní na zadaném objektu.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Ve výchozím nastavení je povolený přístup k rozhraní vlastního dotazu.Custom query interface access is enabled by default.

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 https://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
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í.The object that provides the interface.

T
Type

Typ rozhraní, které se požaduje.The type of interface that is requested.

Návraty

Ukazatel rozhraní, který představuje určené rozhraní pro objekt.The interface pointer that represents the specified interface for the object.

Atributy

Výjimky

Parametr T není rozhraní.The T parameter is not an interface.

-nebo--or- Typ není viditelný pro model COM.The type is not visible to COM.

-nebo--or- Parametr T je definice obecného typu.The T parameter is a generic type definition.

Parametr o nepodporuje požadované rozhraní.The o parameter does not support the requested interface.

Parametr o je null.The o parameter is null.

-nebo--or- Parametr T je null.The T parameter is null.

Poznámky

Tato metoda vrátí ukazatel rozhraní, který představuje požadované rozhraní pro zadaný objekt.This method returns an interface pointer that represents the requested interface on the specified object. Je zvláště užitečné, pokud máte nespravovanou metodu, která očekává, že bude předán ukazatel rozhraní.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. Volání objektu s touto metodou způsobí, že se počet odkazů zvýší na ukazatel rozhraní předtím, než se vrátí ukazatel.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Vždy používejte Marshal.Release pro snížení počtu odkazů, jakmile jste dokončili ukazatel myši.Always use Marshal.Release to decrement the reference count once you have finished with the pointer. Při použití nezpracovaných ukazatelů rozhraní modelu COM je nutné dodržovat pravidla definovaná v modelu COM.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject(Object, Type) je užitečné při volání metody, která zveřejňuje parametr objektu modelu COM jako typ IntPtr nebo s vlastním zařazováním.GetComInterfaceForObject(Object, Type) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. I když je méně společná, můžete použít tuto metodu na spravovaném objektu a získat ukazatel na obálku s možnou modelem COM objektu.Although less common, you can use this method on a managed object to obtain a pointer to the object's COM callable wrapper. Můžete například použít GetComInterfaceForObject(Object, Type) na spravovaném objektu, který je exportován do modelu COM, aby získal ukazatel rozhraní pro System.Runtime.InteropServices.UCOMIConnectionPointContainer.For example, you can use GetComInterfaceForObject(Object, Type) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer. Nemůžete získat ukazatel na rozhraní třídy, protože rozhraní třídy nemá odpovídající typ k předání druhému parametru (t).You cannot obtain a pointer to a class interface since a class interface lacks the corresponding type to pass to the second parameter (t). Místo toho použijte Marshal.GetIDispatchForObject k vyvolání členů na výchozím rozhraní obálky s podporou modelu COM, což je obvykle rozhraní třídy automatického odeslání.Instead, use Marshal.GetIDispatchForObject to invoke the members on the default interface of the COM callable wrapper, which is usually an auto-dispatch class interface.

Přetížení metody GetComInterfaceForObject(Object, Type) umožňuje přizpůsobení rozhraní dotazů ve výchozím nastavení.The GetComInterfaceForObject(Object, Type) method overload allows query interface customization by default. Chcete-li určit, zda se má použít přizpůsobení rozhraní dotazu, použijte přetížení metody GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode).To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Další informace naleznete v článcích obálka s odkazem na volat a na obálku s odkazem na spuštění.For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Zabezpečení

SecurityCriticalAttribute
vyžaduje úplný vztah důvěryhodnosti pro bezprostředně volajícího.requires full trust for the immediate caller. Tohoto člena nelze použít v kódu s částečnou důvěryhodností ani v transparentním kódu.This member cannot be used by partially trusted or transparent code.

Viz také

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Varování

Toto rozhraní API je teď zastaralé.

Vrací ukazatel na rozhraní IUnknown , které představuje zadané rozhraní na zadaném objektu.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Přístup k rozhraní vlastního dotazu se řídí zadaným režimem přizpůsobení.Custom query interface access is controlled by the specified customization mode.

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);
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í.The object that provides the interface.

T
Type

Typ rozhraní, které se požaduje.The type of interface that is requested.

mode
CustomQueryInterfaceMode

Jedna z hodnot výčtu, která určuje, zda se má použít IUnknown::QueryInterface přizpůsobení dodané ICustomQueryInterface.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

Návraty

Ukazatel rozhraní, které představuje rozhraní objektu.The interface pointer that represents the interface for the object.

Atributy

Výjimky

Parametr T není rozhraní.The T parameter is not an interface.

-nebo--or- Typ není viditelný pro model COM.The type is not visible to COM.

-nebo--or- Parametr T je definice obecného typu.The T parameter is a generic type definition.

Objekt o nepodporuje požadované rozhraní.The object o does not support the requested interface.

Parametr o je null.The o parameter is null.

-nebo--or- Parametr T je null.The T parameter is null.

Poznámky

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) vám umožní určit, jestli se má použít přizpůsobení rozhraní dotazů.GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) lets you specify whether to apply query interface customization. Použijte přetížení GetComInterfaceForObject(Object, Type) k použití přizpůsobení rozhraní dotazu ve výchozím nastavení.Use the GetComInterfaceForObject(Object, Type) overload to apply query interface customization by default.

Zabezpečení

SecurityCriticalAttribute
vyžaduje úplný vztah důvěryhodnosti pro bezprostředně volajícího.requires full trust for the immediate caller. Tohoto člena nelze použít v kódu s částečnou důvěryhodností ani v transparentním kódu.This member cannot be used by partially trusted or transparent code.

GetComInterfaceForObject<T,TInterface>(T)

[Podporováno v .NET Framework 4.5.1 a novějších verzích][Supported in the .NET Framework 4.5.1 and later versions] Vrací ukazatel na rozhraní IUnknown , které představuje zadané rozhraní na objektu zadaného typu.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. Ve výchozím nastavení je povolený přístup k rozhraní vlastního dotazu.Custom query interface access is enabled by default.

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

Parametry typu

T

Typ o.The type of o.

TInterface

Typ rozhraní, které se má vrátit.The type of interface to return.

Parametry

o
T

Objekt, který poskytuje rozhraní.The object that provides the interface.

Návraty

Ukazatel rozhraní, které představuje rozhraní TInterface.The interface pointer that represents the TInterface interface.

Atributy

Výjimky

Parametr TInterface není rozhraní.The TInterface parameter is not an interface.

-nebo--or- Typ není viditelný pro model COM.The type is not visible to COM.

-nebo--or- Parametr T je otevřený obecný typ.The T parameter is an open generic type.

Parametr o nepodporuje rozhraní TInterface.The o parameter does not support the TInterface interface.

Parametr o je null.The o parameter is null.

Poznámky

Tato metoda vrátí ukazatel rozhraní, které představuje rozhraní TInterface zadaného objektu.This method returns an interface pointer that represents the TInterface interface on the specified object. Je zvláště užitečné, pokud máte nespravovanou metodu, která očekává, že bude předán ukazatel rozhraní.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. Volání objektu s touto metodou způsobí, že se počet odkazů zvýší na ukazatel rozhraní předtím, než se vrátí ukazatel.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Vždy použijte metodu Marshal.Release pro snížení počtu odkazů po dokončení s ukazatelem.Always use the Marshal.Release method to decrement the reference count when you have finished with the pointer. Při použití nezpracovaných ukazatelů rozhraní modelu COM je nutné dodržovat pravidla definovaná v modelu COM.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject<T,TInterface>(T) je užitečné při volání metody, která zveřejňuje parametr objektu modelu COM jako typ IntPtr nebo s vlastním zařazováním.GetComInterfaceForObject<T,TInterface>(T) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Tuto metodu můžete použít také na spravovaném objektu, chcete-li získat ukazatel na obálku s možnou modelem COM objektu, i když je to méně běžné.You can also use this method on a managed object to obtain a pointer to the object's COM callable wrapper, although this is less common. Můžete například použít GetComInterfaceForObject<T,TInterface>(T) na spravovaném objektu, který je exportován do modelu COM, aby získal ukazatel rozhraní pro System.Runtime.InteropServices.UCOMIConnectionPointContainer.For example, you can use GetComInterfaceForObject<T,TInterface>(T) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer.

Přetížení metody GetComInterfaceForObject<T,TInterface>(T) umožňuje přizpůsobení rozhraní dotazů ve výchozím nastavení.The GetComInterfaceForObject<T,TInterface>(T) method overload allows query interface customization by default. Chcete-li určit, zda se má použít přizpůsobení rozhraní dotazu, použijte přetížení metody GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode).To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Další informace naleznete v článcích obálka s odkazem na volat a na obálku s odkazem na spuštění.For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Zabezpečení

SecurityCriticalAttribute
vyžaduje úplný vztah důvěryhodnosti pro bezprostředně volajícího.requires full trust for the immediate caller. Tohoto člena nelze použít v kódu s částečnou důvěryhodností ani v transparentním kódu.This member cannot be used by partially trusted or transparent code.

Platí pro